java压缩图片到十几k_图片上传BLOB总是会少10几K

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

废话不多说,主要代码如下:

conn = DriverManager.getConnection(DBUtil.url, DBUtil.user, DBUtil.password);

stmt = conn.createStatement();

//上传BLOB类型的字段分3步

//1.修改(或是插入)EMPTY_BLOB()到BLOB字段中

ps = conn.prepareStatement("update z_user set image=EMPTY_BLOB() WHERE rid=?");

ps.setString(1,rid);

ps.executeUpdate();

ps = conn.prepareStatement("SELECT image FROM z_user WHERE rid=? FOR UPDATE");

ps.setString(1,rid);

rs = ps.executeQuery();

// stmt.executeUpdate("update z_user set image=EMPTY_BLOB() WHERE rid='"+rid+"'");

// //2.查出该BLOB字段

// rs = stmt.executeQuery("SELECT image FROM z_user WHERE rid='"+rid+"' FOR UPDATE");

if(rs.next()) {

//将本地文件读到输入流中,写入一个和该文件同样大小的byte数组中

fis = new FileInputStream(path);

// byte[] blobBuf = new byte[blob.getBufferSize()];

byte[] blobBuf = new byte[(int)fis.available()];

System.out.println("--文件大小-(int)fis.available()--"+(int)fis.available());

//3.取出该BLOB字段

BLOB blob = (BLOB)rs.getBlob("image");

//获取此字段的输出流

out = blob.getBinaryOutputStream();

int length = -1;

// while ((length = fis.read(blobBuf)) != -1){

// //将数组中的数据写入输出流

// out.write(blobBuf,0,length);

// }

fis.read(blobBuf);

out.write(blobBuf);

// ps = conn.prepareStatement("update z_user set image=? where rid=?");

// ps.setBlob(1,blob);

// ps.setString(2,rid);

// ps.executeUpdate();

conn.commit();

System.out.println("---blob.length()----"+blob.length());

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值