我最近将Primefaces版本更新为6.2,这样做之后,我发现文件上传已停止工作。下面是我的代码:
<p:fileUpload label="Choose (Max. 5Mb)" fileUploadListener="#{action.handleFileUpload}" mode="advanced" dragDropSupport="false" sizeLimit="6553600"
fileLimit="1" allowTypes="/(\.|\/)(xls|xlsx)$/" update=":dataUploadForm,:dataUploadForm:masterDataPanel" />
Java代码:
public void handleFileUpload(FileUploadEvent event) {
try {
UploadedFile uploadedFile = event.getFile();
// do some processing
} catch (Exception ex) {
LOGGER_.error("", ex);
}
}
根据下图,当我单击“选择”按钮时,它会打开一个对话框,允许您选择文件,而当我选择文件并单击“确定”时,什么也没有发生。但是,当我重新加载此页面然后执行相同的操作时,文件将成功上传。
我能够通过在Bean中创建数据类型为“ UploadedFile”的变量,然后按如下所示修改方法来解决该问题:
public void handleFileUpload(FileUploadEvent event) {
try {
UploadedFile uploadedFile = event.getFile();
Bean.setUploadedFile(uploadedFile);
// do some processing
} catch (Exception ex) {
LOGGER_.error("", ex);
}
}
但是我认为这不是正确的方法,因为当并发用户上载重文件时,JVM可能由于重载而停止运行。除了这个问题,我们还有其他选择吗?