使用jsf上传多个文件

问题描述

我正在使用带有Primefaces的JSF 2.2框架,但是无法创建多个文件导入。我尝试使用很多选项,但是它不起作用

公共静态集合getAllParts(Part part)抛出ServletException,IOException {

    HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
   
    return request.getParts().stream().filter(p -> part.getName().equals(p.getName())).collect(Collectors.toList());
}

公共无效的commit()引发ServletException,IOException {

for (Part part : getAllParts(file)) {

    String fileName = part.getSubmittedFileName();

    InputStream fileContent = part.getInputStream();
    // ... 
    //
    // E.g. https://stackoverflow.com/q/14211843/157882
}

}

但是它仍然不起作用。而且HttpServletRequest请求返回空值。请帮助我解决这个问题

解决方法

使用jsf和Primefaces代替servlet请求。

例如

在您的web.xml中

<context-param>
    <param-name>primefaces.UPLOADER</param-name>
    <param-value>auto|native|commons</param-value>
</context-param>
<filter>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <filter-class>
    org.primefaces.webapp.filter.FileUploadFilter
    </filter-class>
</filter>
<filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
</filter-mapping>

在您的pom中

<dependency>
  <groupId>commons-fileupload</groupId>
  <artifactId>commons-fileupload</artifactId>
  <version>1.4</version>
</dependency>

在您的.xhtml中:

<h:form id="uploadingForm" enctype="multipart/form-data">
        <p:fileUpload listener="#{yourbean.handleFileUpload}" 
                        mode="advanced" dragDropSupport="false"
                        multiple="true" update="messages" sizeLimit="100000" fileLimit="3" /> 
</h:form>

在您的bean中:

   private List<UploadedFile> uploadedFiles;

    public void handleFileUpload(FileUploadEvent event) {
             uploadedFiles.add(event.getFile());
    }

现在您可以处理上载文件列表中的文件了吗?

you can even check the documentation

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...