所以,伙计们,我已经决定做一个大学"家庭作业"使用JSF 2.2和PrimeFaces 5.0,理论上我最后,但我上传文件很困难,经过一整天的努力,我决定发帖。问题是文件没有到达应该去的地方,但是执行该方法并且没有显示错误和异常。
page.xhtml
<p:fileUpload id="msg"
fileUploadListener="#{processoCtrl.handleFileUpload}"
allowTypes="/(\.|\/)(doc|docx|pdf)$/" mode="advanced"
sizeLimit="10485760"
invalidFileMessage="Formato de arquivo inválido"/>
<p:messages id="messages" showDetail="true" autoUpdate="true" closable="true"/>
ManagedBean
public void handleFileUpload(FileUploadEvent event) {
ExternalContext extContext = FacesContext.getCurrentInstance().getExternalContext();
// I already tryed //WEB-INF// , \\WEB-INF\\ e \WEB-INF\ (who knows...)
File result = new File(extContext.getRealPath("/WEB-INF/" + event.getFile().getFileName()));
System.out.println("/WEB-INF/" + event.getFile().getFileName());
try {
FileOutputStream fileOutputStream = new FileOutputStream(result);
byte[] buffer = new byte[6124];
int bulk;
InputStream inputStream = event.getFile().getInputstream();
while(true) {
bulk = inputStream.read(buffer);
if (bulk < 0) {
break;
}
fileOutputStream.write(buffer, 0, bulk);
fileOutputStream.flush();
}
fileOutputStream.close();
inputStream.close();
FacesMessage msg = new FacesMessage("File Description", "file name: " +
event.getFile().getFileName() + " file size: " +
event.getFile().getSize() / 1024 + "Kb content type: " +
event.getFile().getContentType() + "The file was uploaded.");
FacesContext.getCurrentInstance().addMessage(null, msg);
} catch (IOException e) {
e.printStackTrace();
FacesMessage error = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), "erro.");
FacesContext.getCurrentInstance().addMessage(null, error);
}
}
Web.xml的一部分
<filter>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<filter-class>
org.primefaces.webapp.filter.FileUploadFilter
</filter-class>
<init-param>
<param-name>thresholdSize</param-name>
<param-value>51200</param-value>
</init-param>
<init-param>
<param-name>uploadDirectory</param-name>
<param-value>
/var/temp
</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
PS:这是今天经过无数次的最后一次尝试!这个似乎是一个小小的“更好的”#34; 。