Pessoal,
estou implementando uma aplicaçao onde vou precisar fazer upload de foto.
Tenho um problema, Nao posso usar RichFaces nem MyFaces.
Tenho que fazer à moda antiga…
Meu problema é que nao consigo pegar o que foi escolhido via request… ta vindo null…
Alguem ajuda?
segue o código.
UploadBean.java
public class UploadBean {
private ServidorFacade servidorFacade;
private File file;
private Servidor servidor;
public void saveUpload() throws BusinessException, IOException
{
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
// Captura o arquivo que foi selecionado na tela via request.
File file = new File(request.getParameter("idArquivoUpload")); // Aqui tá nuuullll!!!!!
servidor.setFoto(geraBlob(file));
try
{
// Salva a foto do servidor
servidorFacade.save(servidor);
} catch (BusinessException e) {
throw new BusinessException(e);
}
}
/**
* Método responsável por receber um arquivo do tipo File, convertê-lo, e retornar um array de bytes.
* @param arquivo
* @return arquivoBytes - O array de bytes
* @throws IOException
*/
public static byte[] geraBlob(File arquivo) throws IOException {
byte arquivoBytes[];
FileInputStream fileInputStream;
int tamanhoArquivo;
fileInputStream = new FileInputStream(arquivo);
tamanhoArquivo = (int) arquivo.length() + 1;
arquivoBytes = new byte[tamanhoArquivo];
fileInputStream.read(arquivoBytes);
fileInputStream.close();
return arquivoBytes;
}
/**
* Retorna o File.<br>
* @return O File do UploadBean
*/
public File getFile() {
return file;
}
/**
* Define o File do UploadBean.<br>
* @param file O File a ser definido para o UploadBean
*/
public void setFile(File file) {
this.file = file;
}
/**
* Retorna o ServidorFacade.<br>
* @return O ServidorFacade do UploadBean
*/
public ServidorFacade getServidorFacade() {
return servidorFacade;
}
/**
* Define o ServidorFacade do UploadBean.<br>
* @param servidorFacade O ServidorFacade a ser definido para o UploadBean
*/
public void setServidorFacade(ServidorFacade servidorFacade) {
this.servidorFacade = servidorFacade;
}
}
xhtml
<a4j:form>
<rich:modalPanel id="panel" minHeight="200" minWidth="450"
height="200" width="500">
<f:facet name="header">
<h:panelGroup id="idPanelGroup">
<h:outputText id ="idModalUploadFoto" value="Upload Foto"></h:outputText>
</h:panelGroup>
</f:facet>
<f:facet name="controls">
<h:panelGroup id="idPanelGroup2">
<rich:componentControl id="idComponente1" for="panel" attachTo="hidelink" operation="hide" event="onclick"/>
</h:panelGroup>
</f:facet>
<h:form enctype="multipart/form-data">
<input type="file" id="idArquivoUpload" value="#{uploadBean.file}"/>
<br /> <br />
<h:commandButton value="Enviar" id="idBotaoEnviar" onclick="linkClick('resultadoPesquisa:idLinkUpload');"/>
</h:form>
<br/>
<br/>
<center>
<h:commandButton value="Fechar" id="botaoFechar" type="button">
<rich:componentControl id="idBotaoFechar" for="panel" attachTo="botaoFechar" operation="hide" event="onclick"/>
</h:commandButton>
</center>
</rich:modalPanel>
</a4j:form>
<h:commandLink action="#{uploadBean.saveUpload}" id="idLinkUpload" />
