Olá amigos do GUJ, boa noite.
Estou tendo um problema ao utilizar o componente t: inputfileupload.
Tenho um jspx com o seguinte código:
<t:inputFileUpload id=“ifuArquivo” required=“true” value="#{professorController.arquivoEnviado}" accept=“txt, jpg, gif, png, bmp” storage=“file” />
<a4j:commandButton action="#{professorController.enviarArquivo}" value=“Anexar” styleClass=“botoes” reRender=“panInclusaoProfessores” />
O controlador que realiza as ações, é uma sessão e tem os seguintes atributos e métodos que o jspx acima está mapeado:
public String enviarArquivo() throws IOException {
try {
/* Criando arquivo no servidor /
long size = getArquivoEnviado().getSize();
File file = new File(getArquivoEnviado().getName());
BufferedInputStream bufferedInputStream = new BufferedInputStream(this.getArquivoEnviado().getInputStream());
FileOutputStream fileOutputStream = new FileOutputStream(file);
/ Salvando o arquivo */
try {
byte[] buffer = new byte[51200];
int count;
while ((count = bufferedInputStream.read(buffer)) > 0) {
fileOutputStream.write(buffer, 0, count);
return "sucesso";
}
} finally {
bufferedInputStream.close();
fileOutputStream.close();
}
} catch (IOException exception) {
exception.printStackTrace();
}
return "erro";
}
Atributo:
public UploadedFile getArquivoEnviado() {
return arquivoEnviado;
}
public void setArquivoEnviado(UploadedFile arquivoEnviado) {
this.arquivoEnviado = arquivoEnviado;
}
O controlador encontra-se como sessão, mas já tentei colocá-lo como request, e continuou não funcionando.
Ao chamar o getArquivoEnviado() no método enviarArquivo() este encontra-se nulo.
Segue abaixo um trecho do meu web.xml que implementa o filtro correspondente:
<!-- Extensions Filter -->
<filter>
<filter-name>extensionsFilter</filter-name>
<filter-class>org.apache.myfaces.component.html.util.ExtensionsFilter</filter-class>
<init-param>
<param-name>uploadMaxFileSize</param-name>
<param-value>20k</param-value>
<description>Set the size limit for uploaded files.
Format: 10 - 10 bytes
10k - 10 KB
10m - 10 MB
1g - 1 GB
</description>
</init-param>
<init-param>
<param-name>uploadThresholdSize</param-name>
<param-value>10k</param-value>
<description>Set the threshold size - files
below this limit are stored in memory, files above
this limit are stored on disk.
Format: 10 - 10 bytes
10k - 10 KB
10m - 10 MB
1g - 1 GB
</description>
</init-param>
<init-param>
<param-name>uploadRepositoryPath</param-name>
<param-value>/img</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>extensionsFilter</filter-name>
<url-pattern>.jspx</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>extensionsFilter</filter-name>
<url-pattern>/app/</url-pattern>
</filter-mapping>
Pesquisando no google, encontrei diversas pessoas com esse problema, e ninguém conseguiu resolver.
Alguém teria alguma solução para essa questão?
Agradeço desde já pela atenção de todos,
Atenciosamente,
Lessandro