Java 获取从Servlet上载的文件

Java 获取从Servlet上载的文件,java,servlets,file-upload,Java,Servlets,File Upload,我正在尝试让用户在servlet中上传一个文件。我从报纸上读到的。但是upload.parseRequest(request)给出编译时错误,说明RequestContext无法应用于HttpServletRequest对象。为什么它不在这里工作?我还将commons-fileupload-1.3.2和commons-io-2.5包含在WEB-INF/lib文件夹中 DiskFileItemFactory factory = new DiskFileItemFactory(); // m

我正在尝试让用户在servlet中上传一个文件。我从报纸上读到的。但是
upload.parseRequest(request)
给出编译时错误,说明RequestContext无法应用于HttpServletRequest对象。为什么它不在这里工作?我还将commons-fileupload-1.3.2和commons-io-2.5包含在WEB-INF/lib文件夹中

DiskFileItemFactory factory = new DiskFileItemFactory();
    // maximum size that will be stored in memory
    factory.setSizeThreshold(maxMemSize);
    // Location to save data that is larger than maxMemSize.
    factory.setRepository(new File("c:\\temp"));

    // Create a new file upload handler
    ServletFileUpload upload = new ServletFileUpload(factory);
    // maximum file size to be uploaded.
    upload.setSizeMax( maxFileSize );

    try{
        // Parse the request to get file items.
        List fileItems = upload.parseRequest(request);}
    catch(Exception e){
    }

在servlet 3.0中,您可以使用:

示例类上载文件:

package com.app.upload;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.servlet.http.Part;

/**
 * 
 * @author ha: 12/05/2016 17:30
 */
public class UploadPicture {
    private static final String EXTENSION = ".";
    public static final String SAVE_DIR = "uploadImage";
    private static UploadPicture uploadPicture = null;
    private static final Logger LOGGER = Logger.getLogger(UploadPicture.class
            .getName());

    private UploadPicture() {
    }

    public String TranseferPicture(Part part, String appPath) {
        String savePath = appPath + File.separator + SAVE_DIR;
        File fileSaveDir = new File(savePath);
        if (!fileSaveDir.exists()) {
            fileSaveDir.mkdir();
        }

        String fileName = new SimpleDateFormat("yyyyMMdd_HHmmss")
                .format(new Date());
        String nameImage = fileName + EXTENSION + getExtensionImage(part);
        try {
            part.write(savePath + File.separator + nameImage);
            LOGGER.log(Level.FINE, "Upload  Picture to {0} ", savePath
                    + File.separator + nameImage);

        } catch (IOException ex) {
            LOGGER.log(Level.SEVERE, ex.toString(), ex);
        }
        return nameImage;
    }

    private String getExtensionImage(Part part) {

        return part.getContentType().split("/")[1];
    }

    public static UploadPicture createNewInstance() {
        if (uploadPicture == null) {
            uploadPicture = new UploadPicture();
        }
        return uploadPicture;
    }
}
在servlet中,如下所示:

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

import com.app.upload.UploadPicture;

/**
 * 
 * @author ha date: 12/05/2016 17:42
 */
@WebServlet(urlPatterns = "/upload", loadOnStartup = 1)
@MultipartConfig(fileSizeThreshold = 1024 * 1024 * 2, // 2MB
maxFileSize = 1024 * 1024 * 10, // 10MB
maxRequestSize = 1024 * 1024 * 50)
// 50MB
public class ControllerUploadPicture extends HttpServlet {

    private static final long serialVersionUID = 1L;

    @Override
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        String appPath = request.getServletContext().getRealPath("");

        Part part = request.getPart("file");
        UploadPicture.createNewInstance().TranseferPicture(part, appPath);

        getServletContext().getRequestDispatcher("/show.jsp").forward(request,
                response);
    }

}
在jsp文件中

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Upload file</title>
</head>
<body>
    <form method="post" action="upload" enctype="multipart/form-data">
        <input type="file" name="file" /><br /> <input type="submit"
            value="Upload" />
    </form>

</body>
</html>

上传文件

此示例在我的帐户github中提供


您使用哪种语言?请添加合适的标签。