上传文件到MySQL数据库Blob字段 内容多了两个字节

aaa_bbb0123 2011-06-11 05:19:51
struts2+spring+hibernate+tomcat+mysql

将上传文件的内容保存到mysql数据库的blob字段中时会多出两个字节,请大家帮我分析一下原因

Action中代码:

InputStream inputStream=new FileInputStream(upload); //以字节方式读入数据
byte[] b = new byte[inputStream.available()];
System.out.println(inputStream.available());
inputStream.read(b); //读入了64个字节
inputStream.close();
java.sql.Blob keyBlob=Hibernate.createBlob(b); //读入了64个字节
tempUdisk.setuKey(keyBlob); //将字节数组转换为Blob类型
userService.saveUDiskKey(tempUdisk);

hibernate数据库的设计:

private java.sql.Blob uKey;

public void setuKey(java.sql.Blob blob) {
this.uKey = blob;
}
public java.sql.Blob getuKey() {
return uKey;
}

映射文件的设置:

<property name="uKey" type="java.sql.Blob" length="100" not-null="true" />

Spring 数据库连接的设置:

<property name="driverClass" value="com.mysql.jdbc.Driver"/>

<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/WebApplication?useUnicode=true&characterEncoding=gbk"/>

mysql数据库是gbk编码方式


上传文件的内容(UltraEdit查看): 64个字节
DC 12 4F E8 16 9C 71 B3 DA AC 16 F8 22 CB E5 FA ; ?O?渜弛??隋?
BC DB 57 76 EB E5 86 DC E3 B6 9C E1 8B 48 A2 40 ; 价Wv脲嗆愣溼婬
DD 94 DE 2B 39 02 78 A1 78 CC 82 AA EA 3D 4D DA ; 輸?9.x虃=M?
F4 E0 B4 E4 EB FD 04 63 4B 00 88 BC 2C 5D 19 E1 ; 羿翠臊.cK.埣,].

数据库中的内容: 66个字节

DC 12 4F E8 16 9C 71 B3 DA AC 16 F8 5C 5C 22 CB E5 FA
BC DB 57 76 EB E5 86 DC E3 B6 9C E1 8B 48 A2 40
DD 94 DE 2B 39 02 78 A1 78 CC 82 AA EA 3D 4D DA
F4 E0 B4 E4 EB FD 04 63 4B 00 88 BC 2C 5D 19 E1

相对于原始的文件内容多了5c 5c两个字节


困扰我几天了,请大家帮忙看看,到底是什么回事?
...全文
294 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
aaa_bbb0123 2011-06-12
  • 打赏
  • 举报
回复
非常感谢大侠的帮助!!!
aaa_bbb0123 2011-06-12
  • 打赏
  • 举报
回复
谢谢楼上的大侠,情况是这样的。

大部分情况下上传到数据库中的内容都是正确的,只有少数几个情况会发生问题。

我单步调试过,在上传到数据库前都是64个字节,在数据库中才是66个字节。

因为我是按照上传图片到mysql数据库中Blob字段方式传递的,大家做的方式和我的是一样的,我觉得应该没有问题。

我怀疑是数据库连接的问题。

java.sql.Blob 对应的就是Hiberante的 Blob类型




aaa_bbb012345 2011-06-12
  • 打赏
  • 举报
回复
大部分情况下,传入数据库的数据都是对的。只有一小部分文件传入的时候会多出1个或2个字节(用ultraedit查看多出来的字节16进制显示都是5c,即/)


大伙有什么想法?
aaa_bbb012345 2011-06-12
  • 打赏
  • 举报
回复
大伙帮帮帮忙啊!!!
aaa_bbb012345 2011-06-12
  • 打赏
  • 举报
回复
help me !!!
  • 打赏
  • 举报
回复
我不知道 Hibernate 能否将 blob 映射成 byte[]?还是只能映射成 java.sql.Blob ?

如果数据库存的就是多出了两个字节,那么肯定是在写进去的时候有问题了。
zijiegao 2011-06-11
  • 打赏
  • 举报
回复
大侠们看看啊,急急急
zijiegao 2011-06-11
  • 打赏
  • 举报
回复
我也想知道啊,大家帮帮忙。。。。大侠们快来啊。。。
aaa_bbb012345 2011-06-11
  • 打赏
  • 举报
回复
有的文件时正常的,有的文件上传到mysql数据库中就会多出两个字节
很奇怪啊!

大侠没帮帮忙啊!
aaa_bbb012345 2011-06-11
  • 打赏
  • 举报
回复
客户端和服务器端配置了SSL通信

服务器和mysql并没有配置SSL通信
aaa_bbb012345 2011-06-11
  • 打赏
  • 举报
回复
大家帮忙看看啊

help me !!!

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧