国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Apache commons fileupload文件上傳實例講解

2019-11-26 13:42:42
字體:
來源:轉載
供稿:網友

文件上傳的方法主要目前有兩個常用的,一個是SmartUpload,一個是Apache的Commons fileupload.

我們這里主要介紹下第二個的用法,首先要上傳文件,注意幾個問題:

  1 form表單內,要添加空間<input type="file" name="myfile">

  2 form表單的內容格式要定義成multipart/form-data格式

  3 需要類庫:1 commons-io.jar 2commons-fileupload-1.3.1.jar

接下來我們看下用法。

首先閱讀Apache commons fileupload的官方文檔可以發現下面幾個常用的函數:

1 創建文件解析對象

復制代碼 代碼如下:
DiskFileUpload diskFileUpload = new DiskFileUpload();

2 進行文件解析后放在List中,因為這個類庫支持多個文件上傳,因此把結果會存在List中。

復制代碼 代碼如下:
List<FileItem> list = diskFileUpload.parseRequest(request);

3 獲取上傳文件,進行分析(不是必須)

復制代碼 代碼如下:
File remoteFile = new File(new String(fileItem.getName().getBytes(),"UTF-8"));

4 創建新對象,進行流拷貝

file1 = new File(this.getServletContext().getRealPath("attachment"),remoteFile.getName());            file1.getParentFile().mkdirs();            file1.createNewFile();                        InputStream ins = fileItem.getInputStream();            OutputStream ous = new FileOutputStream(file1);                        try{              byte[] buffer = new byte[1024];              int len = 0;              while((len = ins.read(buffer)) > -1)                ous.write(buffer,0,len);              out.println("以保存文件"+file1.getAbsolutePath()+"<br/>");            }finally{              ous.close();              ins.close();            }

這樣我們就完成了文件的上傳。

fileUpload.html

 <form action="servlet/UploadServlet" method="post" enctype="multipart/form-data">    <div align="center">      <fieldset style="width:80%">        <legend>上傳文件</legend><br/>          <div align="left">上傳文件1</div>          <div align="left">            <input type="file" name="file1"/>          </div>          <div align="left">上傳文件2</div>          <div align="left">            <input type="file" name="file2"/>          </div>          <div>            <div align='left'>上傳文件說明1</div>            <div align='left'><input type="text" name="description1"/></div>          </div>          <div>            <div align='left'>上傳文件說明2</div>            <div align='left'><input type="text" name="description2"/></div>          </div>          <div>            <div align='left'>              <input type='submit' value="上傳文件"/>            </div>          </div>      </fieldset>    </div>  </form>

web.xml

<servlet>  <servlet-name>UploadServlet</servlet-name>  <servlet-class>com.test.hello.UploadServlet</servlet-class> </servlet><servlet-mapping>  <servlet-name>UploadServlet</servlet-name>  <url-pattern>/servlet/UploadServlet</url-pattern> </servlet-mapping>

UploadServlet.java

package com.test.hello;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.PrintWriter;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.DiskFileUpload;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.FileUploadException;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 {    response.setCharacterEncoding("UTF-8");    response.getWriter().println("請以POST方式上傳文件");  }  /**   * 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   */  @SuppressWarnings({ "unchecked", "deprecation" })  public void doPost(HttpServletRequest request, HttpServletResponse response)      throws ServletException, IOException {    File file1 = null,file2=null;    String description1 = null,description2 = null;    response.setCharacterEncoding("UTF-8");    request.setCharacterEncoding("UTF-8");    response.setContentType("text/html");    PrintWriter out = response.getWriter();        DiskFileUpload diskFileUpload = new DiskFileUpload();    try{      List<FileItem> list = diskFileUpload.parseRequest(request);            out.println("遍歷所有的FileItem...<br/>");      for(FileItem fileItem : list){        if(fileItem.isFormField()){          if("description1".equals(fileItem.getFieldName())){            out.println("遍歷到description1 ... <br/>");            description1 = new String(fileItem.getString().getBytes(),"UTF-8");          }          if("description2".equals(fileItem.getFieldName())){            out.println("遍歷到description2 ... <br/>");            description2 = new String(fileItem.getString().getBytes(),"UTF-8");          }        }else{          if("file1".equals(fileItem.getFieldName())){            File remoteFile = new File(new String(fileItem.getName().getBytes(),"UTF-8"));            out.println("遍歷到file1...<br/>");            out.println("客戶端文件位置:"+remoteFile.getAbsolutePath()+"<br/>");                        file1 = new File(this.getServletContext().getRealPath("attachment"),remoteFile.getName());            file1.getParentFile().mkdirs();            file1.createNewFile();                        InputStream ins = fileItem.getInputStream();            OutputStream ous = new FileOutputStream(file1);                        try{              byte[] buffer = new byte[1024];              int len = 0;              while((len = ins.read(buffer)) > -1)                ous.write(buffer,0,len);              out.println("以保存文件"+file1.getAbsolutePath()+"<br/>");            }finally{              ous.close();              ins.close();            }          }          if("file2".equals(fileItem.getFieldName())){            File remoteFile = new File(new String(fileItem.getName().getBytes(),"UTF-8"));            out.println("遍歷到file2...<br/>");            out.println("客戶端文件位置:"+remoteFile.getAbsolutePath()+"<br/>");                        file2 = new File(this.getServletContext().getRealPath("attachment"),remoteFile.getName());            file2.getParentFile().mkdirs();            file2.createNewFile();                        InputStream ins = fileItem.getInputStream();            OutputStream ous = new FileOutputStream(file2);                        try{              byte[] buffer = new byte[1024];              int len = 0;              while((len = ins.read(buffer)) > -1)                ous.write(buffer,0,len);              out.println("以保存文件"+file2.getAbsolutePath()+"<br/>");            }finally{              ous.close();              ins.close();            }          }        }        out.println("Request 解析完畢<br/><br/>");      }    }catch(FileUploadException e){}        out.println("<!DOCTYPE HTML PUBLIC /"-//W3C//DTD HTML 4.01 Transitional//EN/">");    out.println("<HTML>");    out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");    out.println(" <BODY>");        if(file1 != null){      out.println("<div>");      out.println(" <div align='left'>file1;</div>");      out.println(" <div align='left'><a href='"+request.getContextPath()+"/attachment/"+          file1.getName()+"'target=_blank>"+file1.getName()+"</a>");      out.println("</div>");      out.println("</div>");    }    if(file2 != null){      out.println("<div>");      out.println(" <div align='left'>file2;</div>");      out.println(" <div align='left'><a href='"+request.getContextPath()+"/attachment/"+          file2.getName()+"'target=_blank>"+file2.getName()+"</a>");      out.println("</div>");      out.println("</div>");    }    out.println("<div>");    out.println(" <div align='left'>description1:</div>");    out.println(" <div align='left'>");    out.println(description1);    out.println("</div>");    out.println("</div>");        out.println("<div>");    out.println(" <div align='left'>description2:</div>");    out.println(" <div align='left'>");    out.println(description2);    out.println("</div>");    out.println("</div>");        out.println(" </BODY>");    out.println("</HTML>");    out.flush();    out.close();  }  /**   * Initialization of the servlet. <br>   *   * @throws ServletException if an error occurs   */  public void init() throws ServletException {    // Put your code here  }}

運行示例

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新民市| 梁平县| 调兵山市| 鄢陵县| 宽甸| 蕉岭县| 五大连池市| 金堂县| 宜君县| 丹阳市| 霍山县| 定南县| 田林县| 长沙市| 渝中区| 鲜城| 万山特区| 铅山县| 灵丘县| 娄底市| 通辽市| 聂拉木县| 黔江区| 体育| 汝阳县| 旬邑县| 上思县| 西吉县| 苏尼特右旗| 南开区| 海兴县| 安庆市| 山东省| 宿松县| 竹北市| 嫩江县| 富川| 富锦市| 荥阳市| 龙陵县| 应用必备|