前段时间申请了个百度个人云存储的PCS开放平台。
各类GET查询接口很容易调用,但是POST得上传文件就不懂了。
百度的POST帮助:
方式一:
POST /rest/2.0/pcs/quota?key2=value2&key3=value3 HTTP/1.1
User-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.6
Pragma: no-cache
Accept: */*
Host:pcs.baidu.com
Content-Length:123
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryS0JIa4uHF7yHd8xJ
------WebKitFormBoundaryS0JIa4uHF7yHd8xJ
Content-Disposition: form-data; name="key1"
value1
------WebKitFormBoundaryS0JIa4uHF7yHd8xJ--
方式二:
POST /rest/2.0/pcs/quota HTTP/1.1
User-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.6
Pragma: no-cache
Accept: */*
Host:pcs.baidu.com
Content-Length:123
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryS0JIa4uHF7yHd8xJ
------WebKitFormBoundaryS0JIa4uHF7yHd8xJ
Content-Disposition: form-data; name="key1"
value1
------WebKitFormBoundaryS0JIa4uHF7yHd8xJ
Content-Disposition: form-data; name="key2"
value2
------WebKitFormBoundaryS0JIa4uHF7yHd8xJ
Content-Disposition: form-data; name="key3"
value3
------WebKitFormBoundaryS0JIa4uHF7yHd8xJ--
上传文件的API说明:
upload(单文件)
功能:创建文件。百度PCS服务支持最大2G的单文件上传,如果需要支持超大文件的断点续传,请参考 分片文件上传的upload方法。
HTTP请求方式 | 接口URL:
POST https://pcs.baidu.com/rest/2.0/pcs/file
请求参数
参数名
类型
是否必须 描述
method string 是 固定值,upload
access_token string 是 开发者准入标识。HTTPS调用时必须使用
path string 是 上传文件路径(包含上传的文件名称)
file char[] 是 上传文件的内容
注:以上四个参数中file需通过post表单传递,其他三个参数需通过query_string传递。
返回结果
{
"path":"\/apps\/yunform\/music\/hello",
"size":13,
"ctime":1331184269,
"mtime":1331184269,
"md5":"59ca0efa9f5633cb0371bbc0355478d8",
"fs_id":3528850315,
"request_id":4043312669
}
根据上述信息我写了以下POST代码,但无效。$token="xxxxxxxxxxxxxxxxxxxxxxxx"
$url="https://pcs.baidu.com/rest/2.0/pcs/file"
$postdata="method=upload&path=%2Fapps%2Fxxx%2F&file=1.txt&access_token="&$token
$oIE=ObjCreate("microsoft.xmlhttp")
$oIE.Open("POST",$url,false)
$oIE.setRequestHeader("Pragma", "no-cache")
$oIE.setRequestHeader("Accept","*/*")
$oIE.setRequestHeader("Content-Length","123")
$oIE.setRequestHeader("Content-Type","multipart/form-data; boundary=----WebKitFormBoundaryS0JIa4uHF7yHd8xJ")
$oIE.setRequestHeader("Referer","pcs.baidu.com")
$oIE.Send($postdata)
$data=$oIE.responseText
msgbox(0,'ok',$data)
还请高手指点一二,感谢您的分析和观看!!! |