[英]How to insert uploaded image from p:fileUpload as BLOB in MySQL?
如何在p:fileUpload中将上传的图像作为BLOB插入MySQL中?
@Lob
@Column(name = "photo")
private byte[] photo;
而在XHTML页面,我写这个 :
<p:inputText value="#{condidat.condidat.photo}" >
<p:fileUpload fileUploadListener="#{fileUploadController.handleFileUpload}"
allowTypes="*.jpg;*.png;*.gif;" description="Images"/>
</p:inputText>
如何以byte[]
检索上传文件的值?
您可以通过FileUploadEvent
获取上传的文件内容。 在PrimeFaces 4.x中使用Apache Commons FileUpload,或在PrimeFaces 5.x中使用上下文参数primefaces.UPLOADER
设置为commons
,您可以使用UploadedFile#getContents()
以byte[]
获取上传的文件。
public void handleFileUpload(FileUploadEvent event) {
byte[] content = event.getFile().getContents();
// ...
}
在PrimeFaces 5.x中,上下文参数primefaces.UPLOADER
在使用JSF 2.2时不存在或设置为auto
或native
,则getContents()
将返回null
因为它未在NativeUploadedFile
实现中实现 。 使用UploadedFile#getInputStream()
然后从中读取字节,例如在commons IO的帮助下 。
public void handleFileUpload(FileUploadEvent event) {
byte[] content = IOUtils.toByteArray(event.getFile().getInputstream());
// ...
}
最后,只需在您的实体中设置此byte[]
并保持/合并它。
确保已将表单编码类型设置为multipart/form-data
并且在使用Apache Commons FileUpload时,您已根据PrimeFaces用户指南在web.xml
配置了文件上载过滤器 。
提到这一点可能会有所帮助,我不得不使用:
public void handleUpload(FileUploadEvent e) throws Exception {
byte[] contents = IOUtils.toByteArray(e.getFile().getInputstream());
//....
}
看起来在PrimeFaces 5.x中, getContents()
总是返回null!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.