【发布时间】:2013-12-23 13:13:18
【问题描述】:
我已经查阅了 stackoverflow 上关于在 primefaces 中上传图像的大部分帖子。有了这个帮助,我已经能够将图像上传到代码中静态指定的目标路径,如本文所示。 save image file in specific directory jsf primefaces project。这很好用。
但是,我希望将图像上传到 web.xml 中指定的目标路径。这是因为我希望即使在部署应用程序之后路径也是可配置的。当我使用 ServletContext#getRealpath() 时,返回路径位于 myProject 文件夹中,但我希望目标路径完全位于项目外部,因为我发现它是最好的方法。例如 E:/myUploads
这是我的 web.xml
<filter>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
<init-param>
<param-name>thresholdSize</param-name>
<param-value>51200</param-value>
</init-param>
<init-param>
<param-name>uploadDirectory</param-name>
<param-value>E:/myUploads</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
这是我的豆子。
public void handleFileUpload(FileUploadEvent event){
//get uploaded file from the event
UploadedFile uploadedFile = (UploadedFile) event.getFile();
//create an InputStream from the uploaded file
InputStream inputStr = null;
try
{
inputStr = uploadedFile.getInputstream();
} catch (IOException e) {
//log error
}
ServletContext servletContext = (ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext();
String uploadPath = servletContext.getRealPath("");
File destFile = new File(uploadPath);
//use org.apache.commons.io.FileUtils to copy the File
try {
FileUtils.copyInputStreamToFile(inputStr, destFile);
} catch (IOException e) {
//log error
}
FacesMessage msg = new FacesMessage(event.getFile().getFileName() + " is uploaded.");
FacesContext.getCurrentInstance().addMessage(null, msg);
}
我的愿望是将上传的图片保存在 E:/myUploads 中,而不必说:
String destPath = "E:\\myUploads\\" + uploadedFile.getFileName();
如果你也告诉我如何使用显示上传的图像,我会很高兴
<p:graphicImage
【问题讨论】:
标签: file-upload jsf-2 primefaces