【发布时间】:2016-12-13 12:22:56
【问题描述】:
我正在使用 PrimeFaces 5.3 <p:fileUpload> 上传 PNG 图像,我想在保存到数据库之前在 <p:graphicImage> 中显示它的预览。
这是一个 MCVE:
<h:form enctype="multipart/form-data">
<p:fileUpload value="#{bean.uploadedFile}" mode="simple" />
<p:graphicImage value="#{bean.image}" />
<p:commandButton action="#{bean.preview}" ajax="false" value="Preview" />
</h:form>
private UploadedFile uploadedFile;
public UploadedFile getUploadedFile() {
return uploadedFile;
}
public void setUploadedFile(UploadedFile uploadedFile) {
this.uploadedFile = uploadedFile;
}
public void preview() {
// NOOP for now.
}
public StreamedContent getImage() {
if (uploadedFile == null) {
return new DefaultStreamedContent();
} else {
return new DefaultStreamedContent(new ByteArrayInputStream(uploadedFile.getContents()), "image/png");
}
}
backing bean 上没有发生错误,并且图像不会在前端加载和显示。客户提到图片返回了 404 not found 错误。
【问题讨论】:
-
你说上传有效,那么这个问题file-upload 与graphic-image 无关而不是graphic-image
-
因为
byte[]的来源来自上传内容,所以我得到了上传内容byte[],但是当我使用上传内容显示在网页上时,它不会显示并说找不到资源 -
所以你的意思是,如果你手动将一个字节[]放入数据库中,而不是通过文件上传,它可以工作吗?
-
对不起先生,您误解了我的问题,我还没有尝试数据库,因为它不能通过文件上传工作
标签: jsf file-upload primefaces preview graphicimage