No caso eu já consegui listar os arquivos em uma dataTable, agora como faço para que o botão de fileDownload ache o arquivo ao qual esta na mesma linha e faça o download?
Eu tenho o dowload assim:
@ManagedBean
public class FileDownloadView {
private StreamedContent file;
public FileDownloadView() {
InputStream stream = FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream("/fotos/teste.jpg");
file = new DefaultStreamedContent(stream, "image/jpg", "downloaded_teste.jpg");
}
public StreamedContent getFile() {
return file;
}
}
Assim ele esta statico, so esta achando o "teste.jpg" .Como eu faria para ele procurar o arquivo listado nessa classe abaixo e fazer o download:
private String arquivo;
private List<Arquivo> listArquivos;
public String getArquivo() {
return arquivo;
}
public void setArquivo(String arquivo) {
this.arquivo = arquivo;
}
String caminho = "C:\\Users\\felipe.vasconcellos\\Documents\\TesteWEB\\web\\fotos\\";
public List<Arquivo> teste() {
listArquivos = new ArrayList<Arquivo>();
File file = new File(caminho);
File afile[] = file.listFiles();
int i = 0;
for (int j = afile.length; i < j; i++) {
File arquivos = afile[i];
System.out.println(arquivos.getName());
listArquivos.add(new Arquivo(arquivos.getName()));
}
return listArquivos;
}
public void handleFileUpload(FileUploadEvent event) {
FacesMessage message = new FacesMessage("Sucesso", event.getFile().getFileName() + " seu uploaded.");
FacesContext.getCurrentInstance().addMessage(null, message);
byte[] conteudo = event.getFile().getContents();
FileOutputStream fos;
try {
String caminho = "C:\\Users\\felipe.vasconcellos\\Documents\\TesteWEB\\web\\fotos\\";
fos = new FileOutputStream(caminho + event.getFile().getFileName());
fos.write(conteudo);
fos.close();
} catch (Exception ex) {
Logger.getLogger(cadastroAnimalController.class.getName()).log(Level.SEVERE, null, ex);
}
}
public List<Arquivo> getListArquivos() {
teste();
return listArquivos;
}
public void setListArquivos(List<Arquivo> listArquivos) {
this.listArquivos = listArquivos;
}