FileDownload解析为null

时间:2015-07-24 12:15:17

标签: jsf primefaces

我的文件下载无法正常工作。我按照this线程中提供的说明进行操作,但是下载的文件只是一个名为null的文件,但是我想要下载的文件大小。我使用的命令是

<p:commandLink ajax="false">
                    Download
                    <p:fileDownload value="#{dtEditView.file}"/>
       </p:commandLink>

我的bean由以下

组成
public StreamedContent getFile() throws IOException {
    path = "C:\\test.jpeg";
    contentType = FacesContext.getCurrentInstance().getExternalContext().getMimeType(path);
    return new DefaultStreamedContent(new FileInputStream(path), contentType);
}

我做错了什么,我错过了什么?我使用的是Primefaces 5.2。

编辑:我将文件重命名为它应该是的文件扩展名,它似乎是我想要的。剩下的问题还在吗?

  1. 为什么重命名为null?
  2. 如何以自动方式设置正确的文件扩展名?

1 个答案:

答案 0 :(得分:3)

只需将要用于下载的文件名添加到DefaultStreamedContent的构造函数:

return new DefaultStreamedContent(new FileInputStream(path), contentType, "filename.jpeg");

或保持与资源相同的名称:

return new DefaultStreamedContent(new FileInputStream(path), contentType, path.getFileName().toString());

与展示中的bean进行比较:

http://www.primefaces.org/showcase/ui/file/download.xhtml