谷歌云存储卷曲php上传
我想上传一个文件到谷歌云存储使用curl php。谷歌云存储卷曲php上传
define("BASE","https://www.googleapis.com/upload/storage/v1/b/");
$key='XXXXX';
$authheaders = array(
"Authorization: Bearer " .$key,
"Content-Type: image/jpeg"
);
$bucket='gs://storage-8c79a.appspot.com';
$file='1234';
$fileName='1.pdf';
$url=BASE.$bucket.'/o?name=name_of_file.jpg&uploadType=multipart';
$curl = curl_init();
curl_setopt($curl, CURLOPT_POSTFIELDS, $file);
curl_setopt($curl, CURLOPT_HTTPHEADER, $authheaders);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_USERAGENT, "HTTP/1.1.5");
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
// 1 is CURL_SSLVERSION_TLSv1, which is not always defined in PHP.
curl_setopt($curl, CURLOPT_SSLVERSION, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);
$response = curl_exec($curl);
echo $response;
输出:
HTTP/1.1 404未找到X-GUploader-UPLOADID:AEnB2UriDzXPtSs2Gac2BVfR4b4abfkroNy5gBCg8D85az3MK69YubPCCp_k3cx64A2MsSCMu-N_4F-RfFe10Vh_GjUbrjkrkzZ4NJ3Tlry4I8js-pgUqtw有所不同:产地不同而不同:X-来源的Content-Type:text/html的; charset = UTF-8内容长度:9日期:2016年8月23日星期二09:57:23 GMT服务器:UploadServer备用协议:443:quic Alt-Svc:quic =“:443”; MA = 2592000; v =“35,34,33,32,31,30”未找到
请帮我解决这个问题。
此代码:
define("BASE","https://www.googleapis.com/upload/storage/v1/b/");
$bucket='gs://someproject.appspot.com';
$url=BASE.$bucket.'/o?name=name_of_file.jpg;
导致URL是这样的:
https://www.googleapis.com/upload/storage/v1/b/gs://someproject.appspot.com/o?name=name_of_file.jppg
URL的桶名称的部分应该只是 “someproject.appspot.com”。删除“gs://”。
对于原始上传,您还没有正确使用'uploadType = multipart',而是'uploadType = media'。我注意到'Content-Type:image/jpeg'不同意未使用的'$ fileName ='1.pdf';'但在这两种情况下,这看起来像只是上传内容而不是内容和元数据。有关不同上传选项的更多信息,请参见https://cloud.google.com/storage/docs/json_api/v1/how-tos/upload。 –
解释你的根本问题,更具体到这个。 – pedrouan
我编辑了您的问题,使其更具可读性。在这个网站上,鼓励用户编辑和重新编辑问题以尽可能地改进问题,所以请在[问]的指导下阅读指导,然后回顾一下您的问题。 –