【问题标题】:Java Servlets Using MultipartConfig使用 MultipartConfig 的 Java Servlet
【发布时间】:2013-10-20 03:35:06
【问题描述】:

我正在使用一个包罗万象的 servlet 并将请求对象传递给其他内部框架类。它是我的应用程序的设计方式。原因超出了这个问题的范围。

@WebServlet(name="RequestHandler", urlPatterns="/*")

我正在尝试使用 multipart-form-data 从浏览器上传文件:

<form action="" method="POST" enctype="multipart/form-data">
    <input type="file" name="file"/>
    <input type="submit" name="videoUpload" value="Upload"/>
</form>

真正将文件数据传递给服务器的唯一方法是使用以下内容注释 servlet:

@MultipartConfig

如果我注释我的包罗万象的 servlet,一切正常,但我实际上并不经常需要使用文件上传功能。

选项 1:别管它。 即使大多数请求不使用注解,是否也会导致不必要的开销?

选项 2:以编程方式添加? 如果检测到多部分的表单类型,有没有办法以编程方式添加注释?

选项 3:在其他地方使用注释。 如何在单独的类中使用注释(我假设它需要在实际创建请求对象之前存在......)?

【问题讨论】:

    标签: java servlets file-upload


    【解决方案1】:

    不加'@MultipartConfig'注解也没关系。您可以通过编程方式确定内容是否为多部分:

     String form_field="";
     FileItem fileItem = null; 
     if (ServletFileUpload.isMultipartContent(request)) {
                ServletFileUpload servletFileUpload = new ServletFileUpload(new DiskFileItemFactory());
                try {
                    fileItemsList = servletFileUpload.parseRequest(request);
                } catch (FileUploadException ex) {
                    out.print(ex);
                }
                String optionalFileName = "";
                Iterator it = fileItemsList.iterator();
                while (it.hasNext()) {
                    FileItem fileItemTemp = (FileItem) it.next();
                    if (fileItemTemp.isFormField()) {
                        if (fileItemTemp.getFieldName().equals("form_field")) {
                            form_field = fileItemTemp.getString();
                        }
                    } else {
                        if (fileItemTemp.getFieldName().equals("file")) {
                            fileItem = fileItemTemp;
                        }
                    }
                }
            }
    

    如果 ServletFileUpload.isMultipartContent(request) 为 false,那么您可以通过 request.getParameter 以一般方式检索表单参数。我在示例中使用了apache file upload

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    相关资源
    最近更新 更多