Servlet實現文件上傳

 

一、Servlet實現文件上傳,需要添加第三方提供的jar

下載地址:

1) commons-fileupload-1.2.2-bin.zip      :   點擊打開鏈接

2) commons-io-2.3-bin.zip                       :    點擊打開鏈接   

 

二、文件上傳的表單提交方式必須是POST方式,

編碼類型:enctype="multipart/form-data",默認是 application/x-www-form-urlencoded

比如:<form action="FileUpLoad"enctype="multipart/form-data"method="post">

 

三、編寫java代碼

 

package com.utils;

import java.io.File;

import java.io.IOException;

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.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

 

public class FileUpload  extends  HttpServlet{

 

    public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

        doPost(request,response);

}

 

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

 

        //1.設置編碼  

        request.setCharacterEncoding("utf-8");

        //2.創建一個工廠類

        DiskFileItemFactory diskFileItemFactory=new DiskFileItemFactory();

        //3.得到當前項目的根目錄

        String dir=this.getServletContext().getRealPath("/");

        //4設置緩存的大小

        diskFileItemFactory.setSizeThreshold(1024*1024);

        //5設置文件的保存目錄

        File file=new File(dir+"fileTemp");

        if(!file.exists()){

            file.mkdir();

        }

        //創建request解析器

        ServletFileUpload servletFileUpload=new ServletFileUpload(diskFileItemFactory);

         List <FileItem> list=null;

       try{

            list=servletFileUpload.parseRequest(request);

        }catch (Exception e) {

            // TODO: handle exception

            System.out.println("error");

        }

    

      if(!list.isEmpty()){

            for(FileItem fileItem:list){

                if(fileItem.isFormField()){

                   

                }else{

                    //表單字段的名稱

                    String fileName=fileItem.getFieldName();

                    //得到文件的名稱

                    String filePath=fileItem.getName();

                    fileItem.getString("utf-8");

                    try {

                        fileItem.write(new  File(file, filePath));

                    } catch (Exception e) {

                         e.printStackTrace();

                    }

                }

            }

        }         

    }

 

}

 

四、JSP頁面編寫

 

<html>

<head>

  <meta http-equiv="Content-Type" content="text/html; charset=GB18030">

  <title>This page for FileUpload</title>

</head>

<body>

  <p>Choose the file for uploading:

  <form action="accept.jsp" method=post enctype="multipart/form-data">

    <input type=file name=fileforload size=30>

    <br>

    <input type=submit value=commit name=submit>

  </form>

</body>

</html>

 

發佈了26 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章