我有一个datatable,它返回文件夹中的所有文件,可以使用primefaces p:filedownload资源下载该文件。
这很好用,但当加载代码时,我无法修改该文件,因为FileInputStream已经打开。如果在datatable加载期间关闭FileInputStream,则p:filedownload将无法正常工作。
有人能帮忙吗?
(如果我取消注释,filedownload将无法工作,如果保留注释,则无法通过Windows编辑文件)
Java:
谢谢!
这很好用,但当加载代码时,我无法修改该文件,因为FileInputStream已经打开。如果在datatable加载期间关闭FileInputStream,则p:filedownload将无法正常工作。
有人能帮忙吗?
(如果我取消注释,filedownload将无法工作,如果保留注释,则无法通过Windows编辑文件)
Java:
public List<StreamedContent> getAnexosQuestionarios() {
List<StreamedContent> resultado = new ArrayList<StreamedContent>();
File[] arquivos = FileHelper.listarArquivos(selected.getEmpresa().getDiretorio(), FileHelper.QUESTIONARIOS);
if (arquivos != null) {
for (File arquivo : arquivos) {
InputStream stream = null;
try {
stream = new FileInputStream(arquivo.getAbsolutePath());
String extensao = arquivo.getName().substring(arquivo.getName().lastIndexOf(".") + 1);
StreamedContent file = new DefaultStreamedContent(stream,
MimeTypes.valueOf(extensao).getMimeType(),
arquivo.getName());
resultado.add(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
// try {
// stream.close();
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
}
return resultado;
}
HTML:
<p:panel header="Questionários">
<p:dataTable id="dtAnexosQuestionarios"
value="#{tecnologiaEmpresaController.anexosQuestionarios}"
var="arquivo" widgetVar="dtAnexosQuestionarios"
emptyMessage="Nenhum anexo disponível"
style="width:50%; border:2 !important; border-color:white !important;">
<p:column headerText="" style="width:20px;">
<h:graphicImage
value="../resources/images/#{tecnologiaEmpresaController.getExtensao(arquivo.name)}.png" />
</p:column>
<p:column headerText="Arquivo">
<p:commandLink id="downloadLink" value="#{arquivo.name}"
ajax="false">
<p:fileDownload value="#{arquivo}" />
</p:commandLink>
</p:column>
</p:dataTable>
</p:panel>
谢谢!