我目前正在研究JSF PrimeFaces,我想下载我的项目名称“CV”文件夹中的文件,但是这里面临的问题是下面的代码
文件上传:
<h:form enctype="multipart/form-data">
<p:fileUpload
fileUploadListener="#{fileUploadController.handleFileUploadCv}"
mode="advanced" update="messages"
allowTypes="/(\.|\/)(doc|docx)$/" />
<p:growl id="messages" showDetail="true" />
</h:form>
文件下载:
<h:form id="form11">
<p:commandButton id="downloadLink" value="Download Cv" ajax="false"
onclick="PrimeFaces.monitorDownload(start, stop)"
icon="ui-icon-arrowthichk-s">
<p:fileDownload value="#{fileDownloadController.file}" />
</p:commandButton>
</h:form>
这是控制器类:
import java.io.InputStream;
import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;
@ManagedBean
@SessionScoped
public class FileDownloadController {
private StreamedContent file;
public FileDownloadController() {
InputStream stream = ((ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext()).getResourceAsStream("D:/Final Year Project/displayjob-portlet/docroot/cv/Junaid.cv");
System.out.print("inside download111");
file = new DefaultStreamedContent(stream);
}
public StreamedContent getFile() {
return file;
}
}
答案 0 :(得分:1)
您正试图从您的电脑而不是从服务器获取文件。由于应用程序在服务器上运行,因此根目录是服务器域根目录。 尝试将文件放在服务器中并更改其目录。 例如,您可以在服务器的根目录中创建一个名为filesToDownload的文件夹,并将您的文件放入其中。然后你会发现它是这样的:
InputStream stream = ((ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext()).getResourceAsStream("filesToDownload/Junaid.cv");
我知道这个问题有点老了,但是当我遇到同样的问题时,我认为这个答案可能对其他人有帮助。
答案 1 :(得分:0)
您是否在页面中添加了该脚本;
<script type="text/javascript">
function start() {
PF('statusDialog').show();
}
function stop() {
PF('statusDialog').hide();
}
</script>