文件上傳有SmartUpload、Apache的Commons fileupload.我們今天介紹Commons fileupload的用法。 
1.commons-fileupload-1.3.1.jar
下載地址:http://xiazai.VeVB.COm/201608/yuanma/javawebfileupload(VeVB.COm).rar
2.web.xml
<!-- 上傳文件 服務器端 --> <servlet> <servlet-name>UploadServlet</servlet-name> <servlet-class>com.servlet.UploadServlet</servlet-class> <init-param> <param-name>filePath</param-name><!-- 文件存儲路徑 --> <param-value>F:/myeclipse/Workspaces/King/WebRoot/uploadfile/</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>UploadServlet</servlet-name> <url-pattern>/servlet/UploadServlet</url-pattern> </servlet-mapping>3.UploadFile.jsp<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>
3.servlet
package com.servlet;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;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;import sun.swing.FilePane;public class UploadServlet extends HttpServlet { private String filePath; /**  * Destruction of the servlet. <br>  */ public void destroy() {  super.destroy(); // Just puts "destroy" string in log  // Put your code here }  public void doGet(HttpServletRequest request, HttpServletResponse response)   throws ServletException, IOException {  response.setCharacterEncoding("UTF-8");  response.getWriter().println("請以POST方式上傳文件"); }  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();//解析request    try {   List<FileItem> fileList = diskFileUpload.parseRequest(request);//將結果放置到List中   out.println("遍歷所有的FileItem...</br>");   this.log("遍歷所有的FileItem...");   for(FileItem fileItem : fileList){    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>");      //服務器端文件,放在uploadfile文件夾下      file1 = new File(filePath,remoteFile.getName());      file1.getParentFile().mkdirs();//創建文件夾路徑      file1.createNewFile();//創建新文件      InputStream ins = fileItem.getInputStream();//FileItem的內容      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>");      //服務器端文件,放在uploadfile文件夾下      file2 = new File(filePath,remoteFile.getName());      file2.getParentFile().mkdirs();//創建文件夾路徑      file2.createNewFile();//創建新文件      InputStream ins = fileItem.getInputStream();//FileItem的內容      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 解析完畢");  } catch (FileUploadException e) {   // TODO 自動生成的 catch 塊   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()+      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()+      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();  }   } public String getServletInfo() {  return "This is my default servlet created by Eclipse"; }  public void init() throws ServletException {  // Put your code here  filePath = getServletConfig().getInitParameter("filePath"); }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答