【问题标题】:google cloud storage curl php upload谷歌云存储 curl php 上传
【发布时间】:2016-12-30 02:20:17
【问题描述】:

我正在尝试使用 Curl 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 Not Found X-GUploader-UploadID: AEnB2UriDzXPtSs2Gac2BVfR4b4abfkroNy5gBCg8D85az3MK69YubPCCp_k3cx64A2MsSCMu-N_4F-RfFe10Vh_GjUbrjkrkzZ4NJ3Tlry4I8js-Origin Content-Type::/Origin Vary Vary:::/Origin Vary charset=UTF-8 内容长度:9 日期:2016 年 8 月 23 日星期二 09:57:23 GMT 服务器:UploadServer 替代协议:443:quic Alt-Svc:quic=":443";马=2592000; v="35,34,33,32,31,30" 未找到

请帮我解决这个问题。

【问题讨论】:

  • 解释你的根本问题,更具体一点。
  • 我已经编辑了您的问题,使其更具可读性。在这个网站上,我们鼓励用户edit 并重新编辑问题以尽可能地改进它们,所以请阅读How to Ask 的指导并回来查看您的问题。

标签: php curl google-cloud-storage


【解决方案1】:

这段代码:

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'; 不一致,但在这两种情况下,这看起来就像您只是在上传内容而不是内容加元数据。有关不同上传选项的更多信息,请参阅cloud.google.com/storage/docs/json_api/v1/how-tos/upload
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-09
  • 1970-01-01
  • 2021-06-09
  • 1970-01-01
  • 1970-01-01
  • 2017-05-06
  • 2018-10-10
相关资源
最近更新 更多