【问题标题】:Read a file post in httpServletRequest在 httpServletRequest 中读取文件帖子
【发布时间】:2011-09-13 15:18:05
【问题描述】:

我有一个这样的html页面:

<FORM METHOD="POST" ACTION="http://localhost:8080/Appli/page/public/envoiPjExterne.seam"  enctype="multipart/form-data">
     <input type="file" size="70" name="file" /><br />     
     <INPUT type="submit" value="Submit">
</FORM>

还有一个像这样的 servlet:

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

DiskFileUpload upload = new DiskFileUpload();
upload.setSizeMax(10000000);// 10 Mo
List items;
try {
        items = upload.parseRequest(request);
        Iterator itr = items.iterator();
        while(itr.hasNext()) {
            FileItem item = (FileItem) itr.next();
        }
    } catch (FileUploadException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

我的“项目”列表总是空的!

【问题讨论】:

    标签: servlets file-upload


    【解决方案1】:

    如果您在请求-响应链中有一些 Filter 已经自动解析 multipart/form-data 请求,就会发生这种情况。由于请求正文只能解析一次(客户端不会多次重新发送上传的文件),因此第二次尝试解析它不会导致任何结果。

    表单的操作 URL envoiPjExterne.seam 中的文件扩展名表明您正在使用 JSF/Seam。这通常与RichFaces 并驾齐驱,后者确实带有类似的过滤器。

    有两种方法可以解决这个问题:

    • 不要提交到 JSF/Seam 视图。将 servlet 映射到 JSF/Seam 未涵盖的唯一 URL 模式上,并让表单操作指向它。例如。 action="uploadServlet".

    • 不要使用 servlet 来处理文件上传。使用 RichFaces 自己的 &lt;rich:fileUpload&gt; 组件和一个简单的 JSF 支持 bean。

    【讨论】:

      猜你喜欢
      • 2019-07-26
      • 1970-01-01
      • 2018-05-16
      • 1970-01-01
      • 2016-03-31
      • 2021-05-29
      • 1970-01-01
      • 2018-10-14
      • 1970-01-01
      相关资源
      最近更新 更多