gpt4 book ai didi

mysql - 使用 BLOB 数据类型在数据库中插入图像

转载 作者:行者123 更新时间:2023-11-29 00:33:17 25 4
gpt4 key购买 nike

实体:

@Lob
@Column(name = "logo")
private byte[] logo;

形式:

<h:form enctype="multipart/form-data">  
<p:messages showDetail="true"/>

<p:fileUpload value="#{testController.file}"
update="messages"
mode="simple"
sizeLimit="1048576"
allowTypes="/(\.|\/)(gif|jpe?g|png)$/"/>

<p:growl id="messages" showDetail="true"/>

<p:commandButton value="Submit" ajax="false"
actionListener="#{testController.upload}"/>
</h:form>

bean :

private testEntity current;
private UploadedFile file;

public UploadedFile getFile() {
return file;
}

public void upload() {
if (file != null) {
try {
byte[] data = file.getContents();
current.setLogo(data);

getFacade().edit(current);
JsfUtil.addSuccessMessage("Successful! " + file.getFileName() + " is uploaded.");
} catch (Exception e) {
}
}
}

当我尝试上传像 80kb 图片这样的文件时,它会给我这个异常

Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'logo' at row 1

但是如果我只上传 < 10kb 的图片,代码就可以工作。

使用 JSF 2.0、Primefaces 3.5,大多数代码都是使用 CRUD 自动生成的。

最佳答案

问题是您的数据库列设置为存储少于您尝试存储的内容。这就是截断的意思。

您需要将数据库列定义更改为 LONGBLOB。

关于mysql - 使用 BLOB 数据类型在数据库中插入图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15562301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com