Pessoal, estou dando manutenção em um sistema JSF, e a parte de enviar um arquivo para servidor não funciona:
é bug no primefaces ?
<h:panelGrid style="margin-left: 4px">
<h:outputLabel value="Licença:" />
<input type="file" name="arquivo" accept="text/plain" size="65" />
</h:panelGrid>
<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>
public void upload() {
HttpServletRequest hsr = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
if (hsr instanceof MultipartRequestWrapper) {
MultipartRequestWrapper mrw = (MultipartRequestWrapper) hsr;
ServletRequest sr = mrw.getRequest();
if (sr instanceof SecurityContextHolderAwareRequestWrapper) {
SecurityContextHolderAwareRequestWrapper scharw = (SecurityContextHolderAwareRequestWrapper) sr;
ServletRequest sr2 = scharw.getRequest();
if (sr2 instanceof FirewalledRequest) {
FirewalledRequest fw = (FirewalledRequest) sr2;
ServletRequest sr3 = fw.getRequest();
if (sr3 instanceof MultipartRequestWrapper) {
MultipartRequestWrapper multi = (MultipartRequestWrapper) sr3;
Long tamanho = new Long(1 * 1024 * 1024); // 1MB
FileItem item = multi.getFileItem("arquivo");
if (item != null && !item.isFormField()) {
@SuppressWarnings("unused")
String fieldName = item.getFieldName();
String fileName = item.getName();
String contentType = item.getContentType();
@SuppressWarnings("unused")
boolean isInMemory = item.isInMemory();
long sizeInBytes = item.getSize();
if (fileName.length() > 0 && sizeInBytes > 0 && sizeInBytes <= tamanho
&& fileName.equals(NOME) && contentType.equals("text/plain")) {
try {
this.gravarArquivo(item);
} catch (IOException ex) {
getLogger().error(ex);
}
}
}
}
}
}
}
}