<JAVA EE>文件上传

来源:互联网 发布:mac上好用的软件 知乎 编辑:程序博客网 时间:2024/05/02 13:58

实现文件上传功能
在此处使用了4个jar包,jdk版本是1.7
commons-fileupload-1.3.2.jar 下载链接
commons-io-2.5.jar下载链接
jsp-api.jar
servlet-api.jar
后面两个jar包在tomcat的lib目录下能找到

import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;/** * Created by leo01 on 17-1-20. */public class getFileServlet extends HttpServlet {    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        //获取文件保存路径 此处保存在/WEB-INF/upload/中        String savaPath = this.getServletContext().getRealPath("/WEB-INF/upload/");        File file = new File(savaPath);        //判断目录是否存在        if(!file.exists() && !file.isDirectory())        {            System.out.println(savaPath+"the File Path doesn't exists!\nCreating...");            file.mkdir();            System.out.println("succeed!");        }        String msg = "";        try        {            //上传文件            //1.创建DiskFileItemFactory对象            DiskFileItemFactory factory = new DiskFileItemFactory();            //2.创建ServletFileUpload对象并使用utf-8编码解决中文乱码问题            ServletFileUpload upload = new ServletFileUpload(factory);            upload.setHeaderEncoding("UTF-8");            //3.从表格中获取文件,确保form的enctype="multipart/form-data"            if(!ServletFileUpload.isMultipartContent(request))            {                return;            }            //4.使用ServletFileUpload解码并返回FileItem 的 List            List<FileItem> list = upload.parseRequest(request);            for(FileItem item:list)            {            //4.1判断post的格式是文件还是formitems                if(item.isFormField())                {                    //如果为formitems获取name:value对                    String name = item.getFieldName();                    String value = item.getString("UTF-8");                    System.out.println(name + " = " + value);                }                else                {                    String filename = item.getName();                    System.out.println(filename);                    if(filename == null || filename.trim().equals(" "))                    {                        continue;                    }                    //获取文件名字 File.separator保存了当前操作系统的分隔符                    filename = filename.substring(filename.lastIndexOf(File.separator)+1);                    InputStream in = item.getInputStream();                    FileOutputStream out = new FileOutputStream(savaPath + File.separator + filename);                    byte buffer[] = new byte[1024];                    int len = 0;                    while((len=in.read(buffer))>0)                    {                        out.write(buffer,0,len);                    }                    in.close();                    out.close();                    item.delete();                    msg = "file upload succeed";                }            }            //TODO: to anaylize the file just got (using POI)        }        catch (Exception e)        {            msg = "file upload fail";            e.printStackTrace();        }        //跳转到另一个网页        request.setAttribute("message",msg);        request.getRequestDispatcher("/webpage/message.jsp").forward(request,response);    }    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        this.doPost(request,response);    }}
0 0
原创粉丝点击