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&amp;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两个字节
困扰我几天了,请大家帮忙看看,到底是什么回事?

解决方案 »

  1.   

    大家帮忙看看啊

    help  me !!!
      

  2.   

    客户端和服务器端配置了SSL通信服务器和mysql并没有配置SSL通信
      

  3.   

    有的文件时正常的,有的文件上传到mysql数据库中就会多出两个字节
    很奇怪啊!大侠没帮帮忙啊!
      

  4.   

    help me !!!
      

  5.   

    大部分情况下,传入数据库的数据都是对的。只有一小部分文件传入的时候会多出1个或2个字节(用ultraedit查看多出来的字节16进制显示都是5c,即/)
    大伙有什么想法?
      

  6.   

    我不知道 Hibernate 能否将 blob 映射成 byte[]?还是只能映射成 java.sql.Blob ?如果数据库存的就是多出了两个字节,那么肯定是在写进去的时候有问题了。
      

  7.   

    谢谢楼上的大侠,情况是这样的。大部分情况下上传到数据库中的内容都是正确的,只有少数几个情况会发生问题。我单步调试过,在上传到数据库前都是64个字节,在数据库中才是66个字节。因为我是按照上传图片到mysql数据库中Blob字段方式传递的,大家做的方式和我的是一样的,我觉得应该没有问题。我怀疑是数据库连接的问题。java.sql.Blob 对应的就是Hiberante的 Blob类型