Servlet中的檔案上傳,Servlet檔案上傳

來源:互聯網
上載者:User

Servlet中的檔案上傳,Servlet檔案上傳

上傳表單中的注意事項:

表單 method 屬性應該設定為 POST 方法,不能使用 GET 方法

表單 enctype 屬性應該設定為multipart/form-data

 

下面的執行個體是藉助於commons-fileupload和commons-io相關包來實現的

import java.io.*;import java.util.*; import javax.servlet.ServletConfig;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.output.*; public class UploadServletextends HttpServlet {     private boolean isMultipart;   private String filePath;   private int maxFileSize = 50 * 1024;   private int maxMemSize = 4 * 1024;   private File file ;    public void init( ){      // 擷取檔案將被儲存的位置      filePath =            getServletContext().getInitParameter("file-upload");   }   public void doPost(HttpServletRequestrequest,               HttpServletResponse response)              throws ServletException,java.io.IOException {      // 檢查我們有一個檔案上傳請求      isMultipart = ServletFileUpload.isMultipartContent(request);     response.setContentType("text/html");      java.io.PrintWriter out =response.getWriter( );      if( !isMultipart ){         out.println("<html>");         out.println("<head>");         out.println("<title>Servletupload</title>");         out.println("</head>");         out.println("<body>");         out.println("<p>No fileuploaded</p>");        out.println("</body>");        out.println("</html>");         return;      }      DiskFileItemFactoryfactory = new DiskFileItemFactory();      //設定上傳檔案時用於臨時存放檔案的記憶體大小      factory.setSizeThreshold(maxMemSize);      //設定存放臨時檔案的目錄,這個目錄需要事先建立好      factory.setRepository(new File("c:\\temp"));       // 建立一個新的檔案上傳處理常式      ServletFileUploadupload = new ServletFileUpload(factory);      // 允許上傳的檔案大小的最大值      upload.setSizeMax( maxFileSize );       try{      // 解析請求,擷取檔案項      List fileItems = upload.parseRequest(request);           // 處理上傳的檔案項      Iterator i = fileItems.iterator();       out.println("<html>");      out.println("<head>");      out.println("<title>Servletupload</title>");       out.println("</head>");      out.println("<body>");      while ( i.hasNext () )      {         FileItem fi = (FileItem)i.next();         if ( !fi.isFormField () )  //是檔案域         {            // 擷取上傳檔案的參數            String fieldName = fi.getFieldName();            String fileName = fi.getName();  //檔案的全路徑            String contentType = fi.getContentType();            boolean isInMemory =fi.isInMemory();            long sizeInBytes = fi.getSize();           //得到去除路徑的檔案名稱            if(fileName.lastIndexOf("\\") >= 0 ){   //路徑中包含“\”時               file = new File( filePath +               fileName.substring( fileName.lastIndexOf("\\")));            }else{   //路徑中不包含“\”時               file = new File( filePath +              fileName.substring(fileName.lastIndexOf("\\")+1)) ;            }            fi.write( file ) ;   // 寫入檔案            out.println("UploadedFilename: " + fileName + "<br>");         }      }      out.println("</body>");      out.println("</html>");   }catch(Exception ex) {       System.out.println(ex);   }   }   public void doGet(HttpServletRequestrequest,                       HttpServletResponseresponse)        throws ServletException,java.io.IOException {               throw new ServletException("GETmethod used with " +                getClass( ).getName( )+":POST method required.");   }}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.