fileupload和cos檔案上傳技術區別
阿新 • • 發佈:2019-02-08
jsp檔案上傳大多采用採用開源專案來簡化處理,這裡列出常用的兩個jar包的實現,並進行比較,說明他們的優缺點和應該注意的問題。
Commons FileUpload提供三種檔案上傳處理方式,DiskFileUpload、ServletFileUpload和 PortletFileUpload三種方式,其中DiskFileUpload已經在javadoc下已經被標記為過期的方法,建議用 ServletFileUpload代替,而PortletFileUpload需要配合portlet-api來使用,所以這裡我們只介紹 ServletFileUpload,並且這個也是最常用的。
com.oreilly.servlet也提供了三種檔案上傳的處理方式,MultipartWrapper、 MultipartRequest和MultipartParser三種方式,其中MultipartWrapper和MultipartRequest 的用法基本相同,並且沒有MultipartRequest提供的操作多,所以這裡介紹 MultipartRequest,MultipartParser和前兩者有些不同,可以用來處理某些特殊情況,例如表單中有兩個同名的檔案上傳選擇 框。
我們暫時稱三面三種檔案上傳方式分別為:ServletFileUpload方式 (MultipartTestServlet)、MultipartRequest方式(MultipartTestServlet2)、 MultipartParser方式(MultipartTestServlet3)
程式碼如下:
test.html
-
<%@ page language="<a href="http://lib.csdn.net/base/javaee" class='replace_word'
- <html>
- <body>
- <formaction="MultipartTestServlet"enctype="multipart/form-data"method="post">
-
<input
- <inputtype="file"name="myfile"/><br/>
- <inputtype="file"name="myfile"/><br/>
- <inputtype="submit"/>
- </form>
- <br/><br/><br/><br/>
- <formaction="MultipartTestServlet2"enctype="multipart/form-data"method="post">
- <inputtype="text"name="username"/><br/>
- <inputtype="file"name="myfile"/><br/>
- <inputtype="file"name="myfile"/><br/>
- <inputtype="submit"/>
- </form>
- <br/><br/><br/><br/>
- <formaction="MultipartTestServlet3"enctype="multipart/form-data"method="post">
- <inputtype="text"name="username"/><br/>
- <inputtype="file"name="myfile"/><br/>
- <inputtype="file"name="myfile"/><br/>
- <inputtype="submit"/>
- </form>
- </body>
- </html>
MultipartTestServlet.java
[java] view plain copy print?- package com.bug.servlet;
- import java.io.File;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.Iterator;
- 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.FileItem;
- import org.apache.commons.fileupload.FileUpload;
- import org.apache.commons.fileupload.FileUploadException;
- import org.apache.commons.fileupload.RequestContext;
- import org.apache.commons.fileupload.disk.DiskFileItemFactory;
- import org.apache.commons.fileupload.servlet.ServletFileUpload;
- import org.apache.commons.fileupload.servlet.ServletRequestContext;
- publicclass MultipartTestServlet extends HttpServlet {
- public MultipartTestServlet() {
- super();
- }
- publicvoid doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- request.setCharacterEncoding("gbk");
- RequestContext requestContext = new ServletRequestContext(request);
- if(FileUpload.isMultipartContent(requestContext)){
- DiskFileItemFactory factory = new DiskFileItemFactory();