java吧 关注:1,235,293贴子:12,702,998
  • 22回复贴,共1

图片上传BLOB总是会少10几K

只看楼主收藏回复

兄弟们,第一次求助呀~
项目中要把员工照片存入Oracle库中,BLOB类型的字段,但是传上去了为什么总是会少10几K···甚至几K的直接就传不上去,我广大的水牛们,帮忙看一下啊~


IP属地:陕西1楼2015-04-15 16:01回复
    废话不多说,主要代码如下:
    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());


    IP属地:陕西2楼2015-04-15 16:01
    回复
      out = blob.getBinaryOutputStream();
      是因为这个方法过时了不推荐使用的缘故么?
      顶下,兄弟们,折腾了一天了···头都要炸了···


      IP属地:陕西3楼2015-04-15 16:03
      收起回复
        帮顶!我还是新手,坐等大神!
         ~“若有天,这副卖相腐化于尘土,可有一分半秒值得我去自豪!”


        IP属地:广东来自Android客户端4楼2015-04-15 16:13
        收起回复
          现在还有项目是直接从照片到数据库的?


          IP属地:广东5楼2015-04-15 16:38
          收起回复
            你就不能把图片存到本地。然后数据库存本地的url地址?。blob很少用,我也不会


            IP属地:陕西来自iPhone客户端6楼2015-04-15 16:42
            收起回复


              IP属地:陕西7楼2015-04-15 16:50
              回复
                你们经理坏脑壳吧~


                8楼2015-04-15 16:50
                收起回复
                  我打java吧就没有弄过blob的?···


                  IP属地:陕西9楼2015-04-15 17:05
                  收起回复