亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java結合百度云存儲BCS代碼分享

2019-11-26 15:22:47
字體:
來源:轉載
供稿:網友

一、簡介

  云也不是一個新概念了,云到底是什么東西,你叫我說個明明白白的我也說不出來,姑且算作聯網的就叫做云。國內的云服務商還是有很多了,主要有兩大類,一類是類似于阿里云的類主機型的云提供商,比如萬網等傳統空間商轉過來的;還有一類是應用應用托管平臺,比如BAE,SAE。相對于阿里云等空間商之類的來說,應用托管平臺的入門更低,為廣大的苦逼程序猿提供了一個好的測試平臺。

         我最近負責的軟件升級程序,多平臺多文件多版本,如果是自己架構文件服務器帶寬肯定不能滿足業務需求,于是上手百度云存儲BCS服務,現在使用正常,但是偶爾的間歇性抽風讓我不得不轉向阿里云存儲,畢竟商業的東西還是要商業化的專業,至少出問題了,不像百度云存儲一樣,客服都沒有找到。但是作為技術使用,還是講一講云存儲的使用。

二、使用步驟
 
  1、  注冊百度帳號
 
    這個就不用我說了。
 
  2、  稱為開發者
 
    進入“百度開放云平臺”(不知道自己百度),登錄后如果不是開發者,會提示讓你注冊稱為開發者,填完資料就ok。
 
  3、  創建應用
 
    進入百度開放云首頁,創建一個BAE應用引擎,創建的時候解決方案不要選擇:使用BAE,除非你還有網站要掛上去。沒事可以試一試。然后進入之后選擇云存儲,創建一個Bucket(后面會說明)。

  4、  下載SDK
 
  5、  測試代碼
 

三、難點與注意
 
  1、沒有API或者API不詳細的SDK需要花費你大量的精力去閱讀,甚至不如看別人的博客來的方便。
 
  2、概念的理解
 
    Bucket:創建應用的之后,會創建一個Bucket,什么是Bucket,你把它想成是Windows下的一個盤符,就像是你創建了一個D盤,可以放文件,可以放文件夾,你還可以創建其他的Bucket。前面說Bucket是一個盤符其實是不準確的,因為它更像是Linux下的根目錄,在讀取你的文件的時候,你不能說我的文件是:1.txt。而是:/1.txt。代碼中已申明。
 
    Object:一個Object代表一個文件,他有很多元信息和文件塊組成(參考文件系統),元信息包括文件名,文件大小,時間等等。使用Object前,一定要記得"/";
 
  3、下載鑒權
 
    使用http請求下載私有文件需要帶上鑒權參數,如果你閱讀官方的API,他只說明了授權的加密過程,但是沒有Java版本,授權的步驟我不特別說明,我也給出了Java的實現,因為在SDK中已經實現了,只是有一個小問題。SDK生成的下載地址在Bucket與文件名之間的“/”被編碼,會導致部分下載器下載失敗,比如手機qq里面不能下載。需要再處理一下?! ?br /> 
  4、API key與Secret Key
 
    通過這個訪問該應用。

四、詳細實現
 
1、  導包

2、  部分代碼
 
授權:
 

復制代碼 代碼如下:

 public class BCSHelper {
     private String host = "";//主機名字:bcs.duapp.com
     private String accessKey = "";//在你創建的應用中可以看到
     private String secretKey = "";
     private String bucket = "";//你創建的Bucket名字
     private BaiduBCS baiduBCS = null;
 
     public BCSHelper() {
         this.host = Configuration.getHost();
         this.accessKey = Configuration.getAccessKey();
         this.secretKey = Configuration.getSecretKey();
         this.bucket = Configuration.getBucket();
         BCSCredentials credentials = new BCSCredentials(accessKey, secretKey);
         baiduBCS = new BaiduBCS(credentials, host);
         baiduBCS.setDefaultEncoding("UTF-8"); // Default UTF-8
     }

上傳與刪除文件:
 

復制代碼 代碼如下:

 /**
      * 上傳文件到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生成地址:

復制代碼 代碼如下:

      * 獲取Object的下載地址
      *
      * @param object
      *            Object名字
      * @return String 返回下載的url
      *******/
     public String getUrl(String object) {
         String result = "";
         GenerateUrlRequest generateUrlRequest = new GenerateUrlRequest(HttpMethodName.GET, bucket, "/" + object);
         generateUrlRequest.setBcsSignCondition(new BCSSignCondition());
         result = baiduBCS.generateUrl(generateUrlRequest);
         result=result.replaceFirst("%2F", "/");
         return result;
     }

  還有很多測試代碼官方已經提供了,我也給出來的,需要的下載自己研究,再封裝一下就可以用在實際項目中了,我沒有發現上傳文件的進度,希望看到的給我說說,畢竟也是菜鳥一個。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
456亚洲影院| 色综合色综合网色综合| 午夜精品一区二区三区av| 亚洲丝袜在线视频| 色婷婷亚洲mv天堂mv在影片| 美女久久久久久久久久久| 国产成人亚洲综合青青| 国产欧美中文字幕| 亚洲自拍小视频免费观看| 中文字幕欧美专区| 亚洲男人天堂九九视频| 国产精品吴梦梦| 国产91色在线| 久久久久亚洲精品成人网小说| 日韩精品高清在线观看| 久久天堂电影网| 中国china体内裑精亚洲片| 欧美麻豆久久久久久中文| www.精品av.com| 欧美日韩人人澡狠狠躁视频| 欧美中文字幕视频在线观看| 亚洲第一页中文字幕| 国产精品av免费在线观看| 久久久久久久久久久亚洲| 国产精品视频精品视频| 国产日韩欧美在线播放| 成人h视频在线观看播放| 欧美激情中文字幕乱码免费| 欧美成人第一页| 精品国产依人香蕉在线精品| 国产美女久久精品香蕉69| 97av在线播放| 日本中文字幕不卡免费| 亚洲精品国产欧美| 久久久久久久久久久人体| 日韩免费观看网站| 成人字幕网zmw| 国产99视频精品免视看7| 隔壁老王国产在线精品| 亚洲欧美精品一区| 欧美日韩一区二区三区在线免费观看| 欧美一级黑人aaaaaaa做受| 成人精品视频在线| 一本大道亚洲视频| 欧美三级xxx| 国产va免费精品高清在线观看| 久久久久久久久国产| 亚洲精品suv精品一区二区| 美女啪啪无遮挡免费久久网站| 原创国产精品91| 午夜精品国产精品大乳美女| 欧美一级淫片aaaaaaa视频| 北条麻妃在线一区二区| 欧美激情视频在线免费观看 欧美视频免费一| 久久视频中文字幕| 成人国内精品久久久久一区| 亚洲国产精品久久精品怡红院| 亚洲综合在线小说| 日韩小视频在线观看| 精品国产区一区二区三区在线观看| 91日韩在线播放| 欧美综合在线第二页| 色播久久人人爽人人爽人人片视av| 欧美性猛交xxxx乱大交3| 欧美日韩国产999| 国产做受高潮69| 欧美国产在线视频| 在线精品国产欧美| 中文字幕一区二区精品| 国产精品国内视频| 日韩欧美国产中文字幕| 97国产精品视频人人做人人爱| 色综合五月天导航| 日韩av综合中文字幕| 日韩在线欧美在线国产在线| 国产精品91免费在线| 午夜精品久久久99热福利| 亚洲免费一在线| 中国china体内裑精亚洲片| 亚洲欧美中文日韩v在线观看| 亚洲已满18点击进入在线看片| 亚洲剧情一区二区| 国产91成人在在线播放| 欧美精品久久久久a| 欧美激情性做爰免费视频| 在线观看国产精品淫| 国产伊人精品在线| 国产精品亚洲美女av网站| 欧美刺激性大交免费视频| 97香蕉超级碰碰久久免费软件| 成人精品网站在线观看| 国产精品女主播| 国产精品男人的天堂| 中文字幕久久久av一区| 91老司机精品视频| 亚洲精品日韩欧美| 亚洲精品www久久久| 成人黄色中文字幕| 亚洲精品视频免费在线观看| 精品国产福利在线| 久久精品99久久久久久久久| 久久网福利资源网站| 日韩中文视频免费在线观看| 国产在线视频欧美| 伊人久久大香线蕉av一区二区| 亚洲xxxx在线| 国产精品青草久久久久福利99| 美女黄色丝袜一区| 国产一区二区av| 久久久精品国产一区二区| 欧美成人精品不卡视频在线观看| 日韩美女免费线视频| 欧美大肥婆大肥bbbbb| 欧美成人在线影院| 成人网欧美在线视频| 精品亚洲国产视频| 成人精品网站在线观看| 欧美亚洲激情在线| 在线看日韩av| 一二美女精品欧洲| 成人精品一区二区三区电影免费| 精品色蜜蜜精品视频在线观看| 欧美精品久久一区二区| 久久久免费精品视频| 久久福利视频网| 国产va免费精品高清在线| 亚洲人成网站色ww在线| 久久影院资源网| 国产精品一区二区久久久久| 欧美日韩免费观看中文| 亚洲人成在线观看网站高清| 在线性视频日韩欧美| 日韩最新中文字幕电影免费看| 色婷婷综合久久久久中文字幕1| 日韩精品免费在线视频| 亚洲国产私拍精品国模在线观看| 国产精品第3页| 91性高湖久久久久久久久_久久99| 姬川优奈aav一区二区| 国产亚洲免费的视频看| 久久久久久有精品国产| 国产精品中文久久久久久久| 亚洲跨种族黑人xxx| 国产在线高清精品| 国产午夜精品视频免费不卡69堂| 国产一区二区三区直播精品电影| 亚洲jizzjizz日本少妇| 午夜精品99久久免费| 国产精品久久久久久av下载红粉| 97久久精品人人澡人人爽缅北| 91精品视频播放| 中文字幕日韩精品在线| 国产mv久久久| 亚洲国产欧美在线成人app| 日韩欧美精品在线观看| 欧美性色xo影院| 欧美一区二区大胆人体摄影专业网站| 欧美在线视频网| 日韩av免费在线| 91久久国产精品| 91精品综合久久久久久五月天| 亚洲精品一区二区三区婷婷月| 久久综合色影院| 精品国产户外野外|