2016-08-23 137 views
0

我想上传一个文件到谷歌云存储使用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”未找到

请帮我解决这个问题。

+0

解释你的根本问题,更具体到这个。 – pedrouan

+0

我编辑了您的问题,使其更具可读性。在这个网站上,鼓励用户编辑和重新编辑问题以尽可能地改进问题,所以请在[问]的指导下阅读指导,然后回顾一下您的问题。 –

回答

0

此代码:

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://”。

+0

对于原始上传,您还没有正确使用'uploadType = multipart',而是'uploadType = media'。我注意到'Content-Type:image/jpeg'不同意未使用的'$ fileName ='1.pdf';'但在这两种情况下,这看起来像只是上传内容而不是内容和元数据。有关不同上传选项的更多信息,请参见https://cloud.google.com/storage/docs/json_api/v1/how-tos/upload。 –