1. 程式人生 > >百度 PCS API的使用方法

百度 PCS API的使用方法

見以下幫助地址:

目錄[隱藏]

PCS API的使用方法請求格式說明


目前所有的提交類介面僅支援POST方式,查詢類介面同時支援POST方式和GET方式。 
所有引數應使用UTF-8編碼

  • URL

  • 引數說明

引數名描述{object_name}操作實體,如quota,file{query_string}引數值需要進行urlencode後攜帶在query_string中HTTP GET訊息

  • URL

  • HTTP Body

HTTP GET請求不攜帶body

  • 引數

GET請求的引數全部攜帶在query_string中

  • 舉例

傳送兩個引數,key1=value1和key2=value2

GET /rest/2.0/pcs/quota?key1=urlencode(value1)&key2=urlencode(value2)HTTP POST訊息

  • URL

  • HTTP Body

multipart/form-data引數不需要進行urlencode

  • 引數

POST引數既可以攜帶在query_string中,也可以攜帶在HTTP Body中,放在query_string中的引數的值,必須進行urlencode

  • 注意

1. 如果HTTP Body 和 query_string存在相同的key,以query_string中的為準2. HTTP URL長度有限,當引數值長度過長,建議將引數放在Body中進行傳輸

  • 舉例

傳送三個引數,key1=value1、key2=value2和key3=value3。

例一效果等同於例二。

例一:

POST /rest/2.0/pcs/quota?key2=value2&key3=value3HTTP/1.1User-Agent: curl/7.12.1 (x86_64-redhat-linux-gnu) libcurl/7.12.1 OpenSSL/0.9.7a zlib/1.2.1.2 libidn/0.5.6Pragma: no-cacheAccept: */*Host:pcs.baidu.comContent-Length:123Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryS0JIa4uHF7yHd8xJ------WebKitFormBoundaryS0JIa4uHF7yHd8xJContent-Disposition: form-data; name="key1

"value1------WebKitFormBoundaryS0JIa4uHF7yHd8xJ--

例二:

POST /rest/2.0/pcs/quota HTTP/1.1User-Agent: curl/7.12.1 (x86_64-redhat-linux-gnu) libcurl/7.12.1 OpenSSL/0.9.7a zlib/1.2.1.2 libidn/0.5.6Pragma: no-cacheAccept: */*Host:pcs.baidu.comContent-Length:123Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryS0JIa4uHF7yHd8xJ------WebKitFormBoundaryS0JIa4uHF7yHd8xJContent-Disposition: form-data; name="key1"value1------WebKitFormBoundaryS0JIa4uHF7yHd8xJContent-Disposition: form-data; name="key2"value2------WebKitFormBoundaryS0JIa4uHF7yHd8xJContent-Disposition: form-data; name="key3"value3------WebKitFormBoundaryS0JIa4uHF7yHd8xJ--響應格式

  • 正常請求

Http Status Code

200 OK

Body

API響應內容

  • 異常請求

Http Status Code

4** : 使用者請求錯誤5** :server服務失敗

Body

異常請求的返回值為json字串例如:{"error_code":110,"error_msg":"Access token invalid or no longer valid","request_id":729562373}error_code:錯誤碼error_msg : 錯誤描述資訊request_id: 請求id,server生成,用於追查和定位請求日誌

  • 錯誤碼定義

HTTP狀態碼
Error_code
Error_msg
備註
2000no error沒有錯誤4003Unsupported open api不支援此介面4034No permission to do this operation沒有許可權執行此操作4035Unauthorized client IP addressIP未授權50331001db query error資料庫查詢錯誤50331002db connect error資料庫連線錯誤50331003db result set is empty資料庫返回空結果50331021network error網路錯誤50331022can not access server暫時無法連線伺服器40031023param error輸入引數錯誤40031024app id is emptyapp id為空50331025bcs error後端儲存錯誤40331041bduss is invalid使用者的cookie不是合法的百度cookie40331042user is not login使用者未登陸40331043user is not active使用者未啟用40331044user is not authorized使用者未授權40331045user not exists使用者不存在40331046user already exists使用者已經存在40031061file already exists檔案已經存在40031062file name is invalid檔名非法40031063file parent path does not exist檔案父目錄不存在40331064file is not authorized無權訪問此檔案40031065directory is full目錄已滿40331066file does not exist檔案不存在50331067file deal failed檔案處理出錯50331068file create failed檔案建立失敗50331069file copy failed檔案複製失敗50331070file delete failed檔案刪除失敗50331071get file meta failed不能讀取檔案元資訊50331072file move failed檔案移動失敗50331073file rename failed檔案重新命名失敗50331081superfile create failedsuperfile建立失敗50331082superfile block list is emptysuperfile 塊列表為空50331083superfile update failedsuperfile 更新失敗50331101tag internal errortag系統內部錯誤50331102tag param errortag引數錯誤50331103tag database errortag系統錯誤40331110access denied to set quota未授權設定此目錄配額40031111quota only sopport 2 level directories配額管理只支援兩級目錄40031112exceed quota超出配額40331113the quota is bigger than one of its parent directorys配額不能超出目錄祖先的配額40331114the quota is smaller than one of its sub directorys配額不能比子目錄配額小50331141thumbnail failed, internal error請求縮圖服務失敗401110Access token invalid or no longer validAccess Token不正確或者已經過期40031201signature error簽名錯誤40431202object not exists檔案不存在40031203acl put error設定acl失敗40031204acl query error請求acl驗證失敗40031205acl get error獲取acl失敗40431206acl get erroracl不存在40031207bucket already existsbucket已存在40031208bad request使用者請求錯誤50031209baidubs internal error伺服器錯誤50131210not implement伺服器不支援40331211access denied禁止訪問50331212service unavailable服務不可用50331213service unavailable重試出錯50331214put object data error上傳檔案data失敗50331215put object meta error上傳檔案meta失敗50331216get object data error下載檔案data失敗50331217get object meta error下載檔案meta失敗40331218storage exceed limit容量超出限額40331219request exceed limit請求數超出限額40331220transfer exceed limit流量超出限額50031298the value of KEY[VALUE] in pcs response headers is invalid伺服器返回值KEY非法50031299no KEY in pcs response headers伺服器返回值KEY不存在

通用引數

以下引數是所有PCS-Http Open API介面都會用到的統一系統級引數。

引數名
型別
是否必需
描述
methodstring是API的資源操作方法名access_tokenstring是訪問令牌,第三方訪問任何需要授權才能訪問的Restful API時都必須提供該引數以便平臺驗證其是否是一個合法的第三方。https介面時必須存在。

PCS API中用於描述檔案或目錄的變數,有以下三種,分別為path、from和to,下表描述他們的使用場景和區別:

引數名
型別
描述
pathstring

可指代檔案,也可以指代目錄

場景:用於PCS中絕大多數API

引數值:檔案絕對路徑或目錄絕對路徑

fromstring

可指代檔案,也可以指代目錄

場景:主要用於move,copy介面

引數值:檔案絕對路徑或目錄絕對路徑

tostring

可指代檔案,也可以指代目錄

場景:主要用於move,copy介面
引數值:檔案絕對路徑或目錄絕對路徑

PCS API列表quota

  • 功能:獲取當前使用者空間配額資訊

  • Request url

GET https://pcs.baidu.com/rest/2.0/pcs/quota 

  • Request parameter

引數名型別是否必需描述methodstring是固定值:infoaccess_tokenstring是開發者准入token,https呼叫時必須使用

  • Response body

{"quota":15000000000,"used":5221166,"request_id":4043312634}

  • Response parameter

引數名型別Url Encode描述quotauint64否空間配額,單位為位元組。useduint64否已使用空間,單位為位元組。

  • Example

curl example

curl -X GET "http://pcs.baidu.com/rest/2.0/pcs/quota?access_token=1.54bef91df2416ee4a41791d4a8ea04fe.86400.1331206383.67272939-188383&method=info"

request

GET /rest/2.0/pcs/quota?access_token=1.54bef91df2416ee4a41791d4a8ea04fe.86400.1331206383.67272939-188383&method=info HTTP/1.1User-Agent: curl/7.12.1 (x86_64-redhat-linux-gnu) libcurl/7.12.1 OpenSSL/0.9.7a zlib/1.2.1.2 libidn/0.5.6Pragma: no-cacheAccept: */*Host:pcs.baidu.com

response

< HTTP/1.1 200 OK< x-pcs-request-id: MTAuMjMuMjQ3LjkxOjgwOjQwNDMzMTI2MzQA< Content-type: text/html< Date: Thu, 08 Mar 2012 05:05:21 GMT< Server: BWS/1.0< Transfer-Encoding: chunked* Connection #0 to host 10.237.1.252 left intact* Closing connection #0{"quota":15000000000,"used":5221166,"request_id":4043312634}upload(單檔案上傳)

  • 功能:建立檔案。百度PCS服務支援最大2G的單檔案上傳,如果需要支援超大檔案的斷點續傳,請參考下面的分片檔案上傳的upload方法。

  • Request url

POST https://pcs.baidu.com/rest/2.0/pcs/file

  • Request parameter

引數名
型別
是否必須描述
methodstring是固定值,uploadaccess_tokenstring是開發者准入token,https呼叫時必須使用pathstring是上傳檔案路徑(包含名稱)filechar[]是上傳檔案的內容

注:以上四個引數中file需通過post表單傳遞,其他三個引數需通過querystring傳遞。

  • Response body

{"path":"\/apps\/yunform\/music\/hello","size":13,"ctime":1331184269,"mtime":1331184269,"md5":"59ca0efa9f5633cb0371bbc0355478d8","fs_id":3528850315,"request_id":4043312669}

  • Response parameter

引數名型別Url Encode描述pathstring是該檔案的絕對路徑sizeuint64否檔案位元組大小ctimeuint64否檔案建立時間mtimeuint64否檔案修改時間md5string否檔案的md5簽名fs_iduint64否檔案在PCS的臨時唯一標識id

  • Example

curl example

curl -X POST -F "[email protected]/helloworld" "http://pcs.baidu.com/rest/2.0/pcs/file?access_token=1.54bef91df2416ee4a41791d4a8ea04fe.86400.1331206383.67272939-188383&method=upload&path=%2Fapps%2Fyunform%2Fmusic%2Fhello"

request

POST /rest/2.0/pcs/file?access_token=1.54bef91df2416ee4a41791d4a8ea04fe.86400.1331206383.67272939-188383&method=upload&path=%2Fapps%2Fyunform%2Fmusic%2Fhello HTTP/1.1User-Agent: curl/7.12.1 (x86_64-redhat-linux-gnu) libcurl/7.12.1 OpenSSL/0.9.7a zlib/1.2.1.2 libidn/0.5.6Pragma: no-cacheAccept: */*Host:pcs.baidu.comContent-Length: 217Expect: 100-continueContent-Type: multipart/form-data; boundary=----------------------------a849129973a7

response

< HTTP/1.1 100 Continue< Date: Thu, 08 Mar 2012 05:24:28 GMT< Server: BaiduBS< HTTP/1.1 200 OK< x-pcs-request-id: MTAuMjMuMjQ3LjkxOjgwOjQwNDMzMTI2NjkA< x-bs-version: ABB8DC656F397EFBE49806CA296A1CEC< ETag: 59ca0efa9f5633cb0371bbc0355478d8< Content-MD5: 59ca0efa9f5633cb0371bbc0355478d8< x-bs-request-id: YmItaWlzLWRldjAzLnZtLmJhaWR1LmNvbTo4MTk1OjQwNDMzMTI2NjkA< Content-type: text/html< Date: Thu, 08 Mar 2012 05:24:29 GMT< Server: BWS/1.0< Transfer-Encoding: chunked* Connection #0 to host 10.237.1.252 left intact* Closing connection #0{"path":"\/apps\/yunform\/music\/hello","size":13,"ctime":1331184269,"mtime":1331184269,"md5":"59ca0efa9f5633cb0371bbc0355478d8","fs_id":3528850315,"request_id":4043312669}upload(分片檔案上傳)

  • 功能:百度PCS服務支援每次直接上傳最大2G的單檔案,如果需要支援上傳超大檔案,那麼可以通過組合呼叫分片檔案上傳的upload方法和create superfile介面實現:首先將超大檔案分割為2G以內的單檔案,並呼叫upload介面將分片檔案依次上傳,其次呼叫create superfile介面完成分片檔案的重組。除此之外,如果應用中需要支援斷點續傳的功能,也可以通過分片上傳檔案並呼叫create superfile介面的方式實現。

  • Request url

POST https://pcs.baidu.com/rest/2.0/pcs/file

  • Request parameter

引數名
型別
是否必須描述
methodstring是固定值,uploadaccess_tokenstring是開發者准入token,https呼叫時必須使用typestring是固定值,tmpfilefilechar[]是上傳檔案的內容

注:以上四個引數中file需通過post表單傳遞,其他三個引數需通過querystring傳遞。 

  • Response parameter

引數名型別Url Encode描述md5string否檔案的md5簽名

  • Example

request

https://pcs.baidu.com/rest/2.0/pcs/file?access_token=1.54bef91df2416ee4a41791d4a8ea04fe.86400.1331206383.67272939-188383&method=upload&type=tmpfile

response

{        "md5":"a7619410bca74850f985e488c9a0d51e",        "request_id":3238563823    }create superfile

  • 功能: 與分片檔案上傳的upload方法配合使用,可以實現超大檔案上傳。同時也可以用於斷點續傳的場景。 

  • Request url

POST https://pcs.baidu.com/rest/2.0/pcs/file

  • Request parameter:

引數名
型別
是否必須描述
methodstring是固定值,createsuperfileaccess_tokenstring是開發者准入token,https呼叫時必須使用pathstring是上傳檔案路徑(包含名稱)paramstring是

block_list陣列,陣列的取值為子檔案內容的MD5,子檔案至少要有兩個,

最多1024個。 本引數必須放在Http Body中進行傳輸,value示例:

{"block_list":["d41d8cd98f00b204e9800998ecf8427e",

"89dfb274b42951b973fc92ee7c252166","1c83fe229cb9b1f6116aa745b4ef3c0d"]}

  • Response body:

{"path":"\/apps\/yunform\/6ddddd.JPG","size":6844,"ctime":1331197101,"mtime":1331197101,"md5":"baa7c379639b74e9bf98c807498e1b64","fs_id":1548308694,"request_id":4043313276}

  • Response parameter:

引數名型別Url Encode描述pathstring是該檔案的絕對路徑sizeuint64否檔案位元組大小ctimeuint64否檔案建立時間mtimeuint64否檔案修改時間md5string否檔案的md5簽名fs_iduint64否檔案在PCS的臨時唯一標識id

  • Example

curl example

curl -v -H "Content-Type: application/x-www-form-urlencoded" -T "request_body.txt" -X POST "https://pcs.baidu.com/rest/2.0/file?method=createsuperfile&path=/apps/yunform/supefile.log&access_token=1.9fb09e8cce44c0d88fe6787138924a26.86400.1331273905.2600617452-188383"

request

> POST /rest/2.0/file?method=createsuperfile&path=/apps/yunform%2Fsupefile.log&access_token=1.9fb09e8cce44c0d88fe6787138924a26.86400.1331273905.2600617452-188383 HTTP/1.1User-Agent: curl/7.12.1 (x86_64-redhat-linux-gnu) libcurl/7.12.1 OpenSSL/0.9.7a zlib/1.2.1.2 libidn/0.5.6Pragma: no-cacheAccept: */*Host: pcs.baidu.comContent-Type: application/x-www-form-urlencodedContent-Length: 163Expect: 100-continue

response

< HTTP/1.1 100 Continue< Date: Thu, 08 Mar 2012 08:58:21 GMT< Server: BaiduBS< HTTP/1.1 200 OK< x-pcs-request-id: MTAuMjMuMjQ3LjkxOjgwOjQwNDMzMTMyNzYA< Content-type: text/html< Date: Thu, 08 Mar 2012 08:58:21 GMT< Server: BWS/1.0< Transfer-Encoding: chunked* Connection #0 to host 10.237.1.252 left intact* Closing connection #0{"path":"\/apps\/yunform\/6ddddd.JPG","size":6844,"ctime":1331197101,"mtime":1331197101,"md5":"baa7c379639b74e9bf98c807498e1b64","fs_id":1548308694,"request_id":4043313276}

download

  • 功能:下載檔案。Download介面支援HTTP協議標準range定義,通過指定range的取值可以實現斷點下載功能。如在request訊息中指定Range: bytes=0-99,那麼響應訊息中會返回該檔案的前100個位元組的內容,繼續指定Range: bytes=100-199,那麼響應訊息中會返回該檔案的第二個100位元組內容。

  • Request url

GET https://pcs.baidu.com/rest/2.0/pcs/file

  • Request parameter

引數名
型別
是否必須描述
methodstring是固定值,downloadaccess_tokenstring是開發者准入token,https呼叫時必須使用pathstring是下載檔案路徑

  • Response body

檔案內容

  • Response parameter

  • Example

curl example

curl -X GET "http://pcs.baidu.com/rest/2.0/pcs/file?access_token=1.54bef91df2416ee4a41791d4a8ea04fe.86400.1331206383.67272939-188383&method=download&path=%2Fapps%2Fyunform%2Fmusic%2Fhello" >hello

request

GET /rest/2.0/pcs/file?access_token=1.54bef91df2416ee4a41791d4a8ea04fe.86400.1331206383.67272939-188383&method=download&path=%2Fapps%2Fyunform%2Fmusic%2Fhello HTTP/1.1User-Agent: curl/7.12.1 (x86_64-redhat-linux-gnu) libcurl/7.12.1 OpenSSL/0.9.7a zlib/1.2.1.2 libidn/0.5.6Pragma: no-cacheAccept: */*Host:pcs.baidu.com

response

< HTTP/1.1 200 OK< x-pcs-request-id: MTAuMjMuMjQ3LjkxOjgwOjQwNDMzMTI4NDkA< Accept-Ranges: bytes< Last-Modified: Thu, 08 Mar 2012 05:24:29 GMT< Expires: Sun, 11 Mar 2012 06:10:43 GMT< x-bs-version: ABB8DC656F397EFBE49806CA296A1CEC< ETag: 59ca0efa9f5633cb0371bbc0355478d8< Content-Type: application/octet-stream< x-bs-request-id: YmItaWlzLWRldjAzLnZtLmJhaWR1LmNvbTo4MTk1OjQwNDMzMTI4NDkA< x-bs-meta-crc32: 2997478465< Content-MD5: 59ca0efa9f5633cb0371bbc0355478d8< Content-Disposition: attachment;filename="hello"< Content-Length: 13< Date: Thu, 08 Mar 2012 06:10:43 GMT< Server: BaiduBS  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current                                 Dload  Upload   Total   Spent    Left  Speed  0    13    0    13    0     0     61      0 --:--:-- --:--:-- --:--:--     0* Connection #0 to host 10.237.1.252 left intact* Closing connection #0mkdir

相關推薦

PCS API的使用方法

見以下幫助地址: 目錄[隱藏] PCS API的使用方法請求格式說明 目前所有的提交類介面僅支援POST方式,查詢類介面同時支援POST方式和GET方式。  所有引數應使用UTF-8編碼。 URL 引數說明 引數名描述{object_name}

如何申請使用PCS API來讓檔案上傳到雲端

一:進入 http://developer.baidu.com/console#manage/apilist! 二:記錄下API Key和Secret Key 三:Server端使用百度OAuth2.0授權呼叫開放API流程詳細文件:http://develo

地圖API的使用方法

地圖 rip ext class hive 百度地圖 containe 其中 map 全文 : http://www.cnblogs.com/xuhongfei/archive/2013/04/10/3011964.html 引用百度地圖API文件 當您引用地圖

PCS快速獲取access_token的方法

好久沒來部落格園了,上次來部落格園還是寫這篇帖子: 《年終總結》工作三年多,來來回回,跌跌撞撞,總結批評一下自己這三年半。 那還是兩年前,當時工作經驗三年,處於人生迷茫期,人生有過多次抉擇,到如今,工作五年,距離當時已然兩載。 如今再度翻開之前部落格,體味到當時那懵懂、衝動、

JS地圖api使用方法

首先,引入百度地圖的指令碼:[javascript] view plain copy<script src="http://api.map.baidu.com/api?v=2.0&ak=A

Android【地圖API】經緯度轉換地址超簡單方法

第一種方式:  public static void reverseGeoCode(LatLng latLng) { // 建立地理編碼檢索例項 GeoCoder geoCoder = GeoCoder.newInstance();

地圖api在Html中顯示,在jsp頁面中不顯示解決方法

在jsp頁面中顯示如下但是在html中正常顯示。原來的程式碼如下<script type="text/javascript" src="http://api.map.baidu.com/api?key=&v=1.1&services=true">&

地圖api清除指定覆蓋物(Overlay)的方法

最近用百度地圖api做專案,需要同時在地圖顯示marker與Polyline,且Polyline需要根據點選來顯示或清除,所以遇到了清除指定覆蓋物的問題,各種搜尋後未能找到完美的解決方法,通過自己思考,摸索了一方法能解決這個問題,發出來給大家分享。好了,進入正題: 清除覆蓋

地圖api 去左下角地圖logo的方法

只需在html檔案中加入這兩句css的程式碼: <style type="text/css">.BMap_cpyCtrl {display: none;}</style> <style type="text/css">.

HTML5頁面直接調用地圖API,獲取當前位置,直接導航目的地(轉)

wid dir tle mark utf-8 mil 獲取 open init HTML5頁面直接調用百度地圖API,獲取當前位置,直接導航目的地 我是應用在微信中,自定義菜單,菜單直接鏈接到這個HTML5頁面,獲取當前位置後,頁面中定好目的地,這樣打開頁面後直接進入導航頁

地圖api入門介紹(js篇)

顯示 .com cnblogs androi web 入門介紹 步驟 api 地圖api 最近因為用到了百度地圖的api,感覺還有點用記錄一下,一方面充實一下自己,第二也希望有用到的同學可以參考一下;因為之前用過android baidu api 所以再用web

在混合app開發過程中使用地圖api的出現坐標偏差的解決

百度 api call cordova overlay forum gpo ext ddr 在項目中使用ngCordova的$cordovaGeolocation模塊獲取當前位置經緯度,當展示在百度地圖中時發現有誤差(我的測試誤差為1.7公裏左右),查資料發現百度地圖經緯度

音樂API抓取

vim 後來 ews new ble -a getch 電臺 威爾 百度音樂API抓取 前段時間做了一個本地音樂的播放器 github地址,想實現在線播放的功能,於是到處尋找API,很遺憾,不是歌曲不全就是質量不高。在網上發現這麽一個APIMRASONG博客,有&ld

地圖api之----根據用戶ip定位城市

服務 利用 bsp result 城市 blog 經緯度 name 定位 LocalCity 這個類是利用用戶IP地址去百度數據庫裏查詢得到IP所在的城市,用法如下: var objCity = new BMap.LocalCity(); objCity.get(func

地圖api實例

code href ont current 設置 span info div 控件 <div id="allmap"></div> <script type="text/javascript" src="http://api.map.bai

地圖api開發:根據坐標獲得地理描述地址

實例 oca str 地理 location api code city api開發 // 創建地理編碼實例 var myGeo = new BMap.Geocoder(); // 根據坐標得到地址描述

地圖API

com element local del calc info 2.0 mat charset <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" con

Python利用地圖api批量獲取地址經緯度

req excel文件 經緯度 imp print pen with 文件 key 1.pip安裝xlrd,xlwt,requests模塊. 2.在工程目錄處放置地點Excel文件。 python代碼: #coding:utf-8 import xlrd import x

地圖api使用

apt htc remove 百度地圖 自己 密鑰 技術 title mar 1.入門程序 (1)引入baidu地圖的javascrpt文件(http路徑訪問百度地圖api官網) <script src="http://api.map.baidu.com/api?

地圖API一:根據標註點坐標範圍計算顯示縮放級別zoom自適應顯示地圖

var spa get bsp pan nts viewport 百度 getview 百度地圖中根據頁面中的point,自動設置縮放級別和視圖中心,將所有的point在視圖範圍內展示。 var points = [point1, point2,point3];