2016-08-23 13 views
0

Curl phpを使用してGoogle Cloud Storageにファイルをアップロードしようとしています。Google Cloud Storage 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見つからないX-GUploader-UploadID:AEnB2UriDzXPtSs2Gac2BVfR4b4abfkroNy5gBCg8D85az3MK69YubPCCp_k3cx64A2MsSCMu-N_4F-RfFe10Vh_GjUbrjkrkzZ4NJ3Tlry4I8js-pgUqtwは変更される場合:起源は変更される場合:X-起源のContent-Type:text/htmlの。 charset = UTF-8 Content-Length:9日付:Tue、23 Aug 2016 09:57:23 GMTサーバー:UploadServer代替プロトコル:443:quic Alt-Svc:quic = ":443"; ma = 2592000; v = "35,34,33,32,31,30"が見つかりませんでした

私はこれを解決するのを手伝ってください。

+0

根本的な問題を説明してください。 – pedrouan

+0

あなたの質問を編集して、少し読みやすくしました。このサイトでは、ユーザーは可能な限り改善するために質問を編集して再編集することをお勧めしますので、[ask]のガイダンスを読んで質問を確認してください。 –

答えて

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をご覧ください。 –

関連する問題