Servlets 在httpServletRequest中读取文件post

Servlets 在httpServletRequest中读取文件post,servlets,file-upload,Servlets,File Upload,我有这样一个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="S

我有这样一个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>

我的列表项总是空的

如果在请求-响应链中有一些过滤器已经自动解析多部分/表单数据请求,则可能发生这种情况。由于请求主体只有在客户端不打算多次重新发送上传的文件时才能被解析,因此第二次尝试解析将不会产生任何结果

表单的操作URL envoiPjExterne.seam中的文件扩展名表明您正在使用。这通常是伴随着一个过滤器而来的

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

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

不要使用servlet来处理文件上载。使用RichFaces自己的组件和简单的JSF支持bean


如果在请求-响应链中有一些过滤器已经自动解析多部分/表单数据请求,则可能会发生这种情况。由于请求主体只有在客户端不打算多次重新发送上传的文件时才能被解析,因此第二次尝试解析将不会产生任何结果

表单的操作URL envoiPjExterne.seam中的文件扩展名表明您正在使用。这通常是伴随着一个过滤器而来的

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

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

不要使用servlet来处理文件上载。使用RichFaces自己的组件和简单的JSF支持bean

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();
    }
}