上传文件

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.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class UploadServlet extends HttpServlet {

    /**
     *
     */
    private static final long serialVersionUID = -1121099899258137988L;
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("get方式请求");
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        /**
         * 检查是不是文件上传
         */
        boolean isMultipart = ServletFileUpload.isMultipartContent(req);
        if (isMultipart) {
            try {
                // Create a factory for disk-based file items
                FileItemFactory factory = new DiskFileItemFactory();
                // Create a new file upload handler
                ServletFileUpload upload = new ServletFileUpload(factory);
                // Parse the request
                List<FileItem> items = upload.parseRequest(req);
                
                //获取服务器路径
                String path = req.getSession().getServletContext()
                        .getRealPath("/files");
                File dir = new File(path);
                if (!dir.exists()) {
                    //创建文件夹
                    dir.mkdirs();
                }
                for (FileItem item : items) {
                    //判断是不是是表单域
                    if (item.isFormField()) {
                        String name = item.getFieldName();//获取属性名
                        String value = item.getString();//获得当前属性值
                        System.out.println(name + "====" + value);
                    } else {
                        String fileName = item.getName();
                        File file = new File(dir, getFileName(fileName));
                        item.write(file);
                    }
                }

            } catch (Exception e) {

                e.printStackTrace();
            }
        } else {

        }
    }
    /**
     * 兼容不同浏览器上传
     * @param filename
     * @return
     */
    private String getFileName(String filename) {
        if (filename.contains("\\")) {
            return filename.substring(filename.lastIndexOf("\\") + 1);
        }
        return filename;
    }
}

你可能感兴趣的:(上传文件)