最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java文件上傳Demo(必看篇)

 更新時(shí)間:2017年05月11日 07:46:28   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇java文件上傳Demo(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

說(shuō)到文件上傳我們要做到:

1.引入兩個(gè)包:commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar

2.將form改為上傳文件模式:enctype="multipart/form-data"

3.開始編寫相關(guān)代碼

這里會(huì)用到幾個(gè)關(guān)鍵的類:磁盤文件工廠DiskFileItemFactory ; 創(chuàng)建servlet文件上傳類:ServletFileUpload

還有幾個(gè)重要的方法:DiskFileItemFactory類用于將以臨時(shí)文件形式保存在磁盤上的存放目錄的方法setRepository;

ServletFileUpload類得到表單中所有的數(shù)據(jù),得到form表單中所有的元素方法:parseRequest

下面看具體代碼:

說(shuō)明以這種方式上傳文件是保存在服務(wù)器端的!

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.FileUtils;
 
 
public class UploadServlet extends HttpServlet {
 
  /**
   * Constructor of the object.
   */
  public UploadServlet() {
    super();
  }
 
  /**
   * Destruction of the servlet. <br>
   */
  public void destroy() {
    super.destroy(); // Just puts "destroy" string in log
    // Put your code here
  }
 
  /**
   * The doGet method of the servlet. <br>
   *
   * This method is called when a form has its tag value method equals to get.
   *
   * @param request the request send by the client to the server
   * @param response the response send by the server to the client
   * @throws ServletException if an error occurred
   * @throws IOException if an error occurred
   */
  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
 
    this.doPost(request, response);
  }
 
  /**
   * The doPost method of the servlet. <br>
   *
   * This method is called when a form has its tag value method equals to post.
   *
   * @param request the request send by the client to the server
   * @param response the response send by the server to the client
   * @throws ServletException if an error occurred
   * @throws IOException if an error occurred
   */
  public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
 
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    DiskFileItemFactory sf= new DiskFileItemFactory();//實(shí)例化磁盤被文件列表工廠
    String path = request.getRealPath("/upload");//得到上傳文件的存放目錄
    sf.setRepository(new File(path));//設(shè)置文件存放目錄
    sf.setSizeThreshold(1024*1024);//設(shè)置文件上傳小于1M放在內(nèi)存中
    String rename = "";//文件新生成的文件名
    String fileName = "";//文件原名稱
    String name = "";//普通field字段
    //從工廠得到servletupload文件上傳類
    ServletFileUpload sfu = new ServletFileUpload(sf);
     
    try {
      List<FileItem> lst = sfu.parseRequest(request);//得到request中所有的元素
      for (FileItem fileItem : lst) {
        if(fileItem.isFormField()){
          if("name".equals(fileItem.getFieldName())){
            name = fileItem.getString("UTF-8");
          }
        }else{
          //獲得文件名稱
          fileName = fileItem.getName();
          fileName = fileName.substring(fileName.lastIndexOf("\\")+1);
          String houzhui = fileName.substring(fileName.lastIndexOf("."));
          rename = UUID.randomUUID()+houzhui;
          fileItem.write(new File(path, rename));
        }
      }
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
     
    System.out.println("普通字段"+name);
    System.out.println("文件名稱"+fileName);
    System.out.println("修改后生成的文件名稱"+rename);
    response.sendRedirect("ok.jsp");
    out.flush();
    out.close();
  }
 
  /**
   * Initialization of the servlet. <br>
   *
   * @throws ServletException if an error occurs
   */
  public void init() throws ServletException {
    // Put your code here
  }
 
}

index.jsp頁(yè)面:

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>  
  <title>文件測(cè)試界面</title>
  <meta http-equiv="pragma" content="no-cache">
  <meta http-equiv="cache-control" content="no-cache">
  <meta http-equiv="expires" content="0">  
  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  <meta http-equiv="description" content="This is my page">
 </head>
 <body>
  <div align="center">
  <form action="UploadServlet" enctype="multipart/form-data" method="post">
    名稱:<input name="name" /> <br>
    圖片:<input name="img" type="file"/><br>
    <input type="submit" value="提交" />  
    <input type="reset" value="重置" />
  </form>
  </div>
 </body>
</html>

ok.jsp頁(yè)面:

<body>
  <h1 align="center">上傳文件成功!</h1>
 </body>

實(shí)現(xiàn)效果就不截圖了,有需要自己那過(guò)去用!

以上這篇java文件上傳Demo(必看篇)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于Java實(shí)現(xiàn)Socket編程入門

    基于Java實(shí)現(xiàn)Socket編程入門

    Java最初是作為網(wǎng)絡(luò)編程語(yǔ)言出現(xiàn)的,使得客戶端和服務(wù)器的溝通變成了現(xiàn)實(shí),而在網(wǎng)絡(luò)編程中,使用最多的就是Socket,本文就來(lái)介紹一下基于Java實(shí)現(xiàn)Socket編程入門,感興趣的可以來(lái)了解一下
    2022-03-03
  • 小議Java中final關(guān)鍵字使用時(shí)的注意點(diǎn)

    小議Java中final關(guān)鍵字使用時(shí)的注意點(diǎn)

    final關(guān)鍵字代表著最后、不可改變,無(wú)論是在用final修飾類、修飾方法還是修飾變量時(shí),都要注意內(nèi)存分配的問(wèn)題.這里來(lái)小議Java中final關(guān)鍵字使用時(shí)的注意點(diǎn):
    2016-06-06
  • RecyclerChart動(dòng)態(tài)屬性圖標(biāo)聯(lián)動(dòng)數(shù)據(jù)動(dòng)態(tài)加載詳解

    RecyclerChart動(dòng)態(tài)屬性圖標(biāo)聯(lián)動(dòng)數(shù)據(jù)動(dòng)態(tài)加載詳解

    這篇文章主要為大家介紹了RecyclerChart動(dòng)態(tài)屬性圖標(biāo)聯(lián)動(dòng)數(shù)據(jù)動(dòng)態(tài)加載詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 淺談servlet與jsp的關(guān)系

    淺談servlet與jsp的關(guān)系

    本文主要介紹了servlet與jsp的相關(guān)知識(shí),并總結(jié)出servlet與jsp之間的關(guān)系,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02
  • Spring中使用Async進(jìn)行異步功能開發(fā)實(shí)戰(zhàn)示例(大文件上傳為例)

    Spring中使用Async進(jìn)行異步功能開發(fā)實(shí)戰(zhàn)示例(大文件上傳為例)

    本文以大文件上傳為例,首先講解在未進(jìn)行程序異步化時(shí),程序的運(yùn)行機(jī)制和具體表現(xiàn),然后講解如何進(jìn)行異步化的改造,讓程序進(jìn)行異步執(zhí)行,通過(guò)本文不僅能讓你掌握如何進(jìn)行Event的事件開發(fā),同時(shí)還能掌握在Spring中如何進(jìn)行異步開發(fā),熟悉@Async的具體用法,感興趣的朋友一起看看吧
    2024-08-08
  • Java環(huán)境變量配置教程

    Java環(huán)境變量配置教程

    這篇文章主要介紹了Java環(huán)境變量配置教程,簡(jiǎn)單介紹了java的環(huán)境變量設(shè)置方法,感興趣的小伙伴們可以參考一下
    2016-06-06
  • 深入理解Java設(shè)計(jì)模式之迭代器模式

    深入理解Java設(shè)計(jì)模式之迭代器模式

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之迭代器模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解
    2021-11-11
  • Spring注入值到Bean的三種方式

    Spring注入值到Bean的三種方式

    這篇文章主要為大家詳細(xì)介紹了Spring注入值到Bean的三種方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Java反射(JDK)與動(dòng)態(tài)代理(CGLIB)詳解

    Java反射(JDK)與動(dòng)態(tài)代理(CGLIB)詳解

    下面小編就為大家?guī)?lái)一篇淺談Java反射與動(dòng)態(tài)代理。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2021-08-08
  • JavaWeb實(shí)戰(zhàn)之開發(fā)網(wǎng)上購(gòu)物系統(tǒng)(超詳細(xì))

    JavaWeb實(shí)戰(zhàn)之開發(fā)網(wǎng)上購(gòu)物系統(tǒng)(超詳細(xì))

    這篇文章主要介紹了JavaWeb實(shí)戰(zhàn)之開發(fā)網(wǎng)上購(gòu)物系統(tǒng)(超詳細(xì)),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-04-04

最新評(píng)論

镇坪县| 基隆市| 融水| 新营市| 凤翔县| 玉山县| 呼伦贝尔市| 宜阳县| 陵川县| 河西区| 霍州市| 金溪县| 龙井市| 盘山县| 凌源市| 宾川县| 通海县| 右玉县| 高州市| 乳山市| 陈巴尔虎旗| 崇仁县| 读书| 鄯善县| 苏州市| 桑植县| 怀宁县| 德江县| 长岭县| 郁南县| 绥芬河市| 宜兰市| 图们市| 辽宁省| 内黄县| 湖州市| 南宁市| 衡阳县| 洞头县| 汉阴县| 莱芜市|