JavaWeb 文件上传 commons_fileupload方式

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 javax.servlet.ServletConfig;

import javax.servlet.ServletContext;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.File;

import java.io.IOException;

import java.util.Iterator;

import java.util.List;



/**

 * Created with IntelliJ IDEA.

 * User: HYY

 * Date: 13-11-17

 * Time: 下午4:13

 * To change this template use File | Settings | File Templates.

 */



/**

 * @author XHW

 * @date 2011-7-26

 */

public class FileUploadServlet extends HttpServlet {



    private static final long serialVersionUID = -7744625344830285257L;

    private ServletContext sc;

    private String savePath;



    public void doGet(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        doPost(request, response);

    }





    public void init(ServletConfig config) {

        //保证根目录下有一个savePath目录

        savePath = "/savePath";

        sc = config.getServletContext();

    }



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

        request.setCharacterEncoding("UTF-8");

        DiskFileItemFactory factory = new DiskFileItemFactory();

        ServletFileUpload upload = new ServletFileUpload(factory);

        try {

            List items = upload.parseRequest(request);

            Iterator itr = items.iterator();

            while (itr.hasNext()) {

                FileItem item = (FileItem) itr.next();

                if (item.isFormField()) {

                    System.out.println("表单参数名:" + item.getFieldName() + ",表单参数值:" + item.getString("UTF-8"));

                } else {

                    if (item.getName() != null && !item.getName().equals("")) {

                        System.out.println("上传文件的大小:" + item.getSize());

                        System.out.println("上传文件的类型:" + item.getContentType());

                        // item.getName()返回上传文件在客户端的完整路径名称

                        System.out.println("上传文件的名称:" + item.getName());



                        File tempFile = new File(item.getName());



                        //上传文件的保存路径

                        File file = new File(sc.getRealPath("/") + savePath, tempFile.getName());

                        item.write(file);

                        request.setAttribute("upload.message", "上传文件成功!");

                    } else {

                        request.setAttribute("upload.message", "没有选择上传文件!");

                    }

                }

            }

        } catch (FileUploadException e) {

            e.printStackTrace();

        } catch (Exception e) {

            e.printStackTrace();

            request.setAttribute("upload.message", "上传文件失败!");

        }

        request.getRequestDispatcher("/uploadResult.jsp").forward(request, response);

    }

}

使用该程序时必须保证在根目录下有一个名为savePath文件夹

至于jsp方面就不写了。

你可能感兴趣的:(fileupload)