龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

Java结合百度云存储BCS代码分享(2)

时间:2014-10-29 02:18来源:网络整理 作者:网络 点击:
分享到:
上传与删除文件: 复制代码 代码如下: /** * 上传文件到BCS * * @return boolean true表示上传成功 * @param file * 需要上传的文件 * * ******/ public boolean putObject(File

上传与删除文件:
 

复制代码 代码如下:

 /**
      * 上传文件到BCS
      *
      * @return boolean true表示上传成功
      * @param file
      *            需要上传的文件
      *
      * ******/
     public boolean putObject(File file) {
         boolean result = true;
         try {
             // 必须有“/”开头
             PutObjectRequest request = new PutObjectRequest(bucket, "/" + file.getName(), file);
             // 设置Object的元信息
             ObjectMetadata metadata = new ObjectMetadata();
             request.setMetadata(metadata);
             baiduBCS.putObject(request);
             LoggerService.addLoggerByOperate("BCS:上传文件到BCS:"+file.getName());
         } catch (Exception e) {
             result = false;
             LoggerService.addLoggerByError(e.getMessage());
             e.printStackTrace();
         }
         return result;
     }
 
     /**
      * 通过Object名删除BCS上面的文件
      *
      * @param object
      *            Object的名字
      * @return boolean true删除成功
      * *****/
     public boolean deleteObject(String object) {
         boolean result = true;
         try {
             if (existObject(object)) {
                 baiduBCS.deleteObject(bucket, "/" + object);
                 LoggerService.addLoggerByOperate("BCS:删除BCS上的文件:"+object);
             }
         } catch (Exception e) {
             result = false;
             e.printStackTrace();
             LoggerService.addLoggerByError(e.getMessage());
         }
         return result;
     }

判断是否存在Object:
 

复制代码 代码如下:

 /**
      * 判断该文件是否存在于BCS
      *
      * @param object
      *            object名
      * @return boolean true表示存在
      * ***/
     public boolean existObject(String object) {
         boolean result = false;
         try {
             result = baiduBCS.doesObjectExist(bucket, "/" + object);
         } catch (Exception e) {
             e.printStackTrace();
         }
         return result;
     }

 
自己写的生成下载地址:
 
复制代码 代码如下:

 /**
      * 获取Object的下载地址
      *
      * @param object
      *            Object名字
      * @return String 返回下载的url
      *******/
     public String getUrl(String object) {
         // 需要加密的内容
         String data = "MBO" + "\n" + "Method=GET" + "\n" + "Bucket=" + bucket + "\n" + "Object=/" + object + "\n";
         // 加密的结果
         String hmacsha1 = getHmacSHA1(secretKey, data);
         // 构造sign参数
         String sign = "MBO:" + accessKey + ":" + hmacsha1;
         // url
         StringBuilder builder = new StringBuilder();
         builder.append("http://");
         builder.append(host);
         builder.append("/");
         builder.append(bucket);
         builder.append("/");
         builder.append(object);
         builder.append("?sign=");
         builder.append(sign);
         return builder.toString();
     }
 
     // 签名加密
     private String getHmacSHA1(String secretKey, String data) {
         String result = "";
         try {
             SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes(), "HmacSHA1");
             Mac mac = Mac.getInstance("HmacSHA1");
             mac.init(signingKey);
             byte[] rawHmac = mac.doFinal(data.getBytes());
             Base64 base64 = new Base64();
             @SuppressWarnings("static-access")
             byte[] enbytes = base64.encodeBase64Chunked(rawHmac);
             result = new String(enbytes, "utf-8");
         } catch (Exception e) {
             e.printStackTrace();
         }
         return result;
     }

修改过的SDK生成地址:

精彩图集

赞助商链接