この質問に対する答えを求めて、ここ数日探し回っていますが、求めている解決策を見つけることができませんでした。
Google_Client を使用してこのタスクを実行する完全に機能するバージョンがありますが、Google_Client を使用せずにこれを実行できるようにしたいと考えています。バケットを使用せずに作成できますが、オブジェクトは作成できません。これに関するGoogleのドキュメントをまったく理解できません(かなり貧弱です)。
そのため、いくつかのパラメーターを取り込んでファイルをアップロードしようとする関数を以下に示します。$authheaders
、$post_fields
(投稿の本文)またはURLに何を入れる必要があるのか わかりません。
public function upload_file($bucket, $fileName, $file, $fileType) {
// Check if we have auth token
if(empty($this->authtoken)) {
echo "Please login to Google";
exit;
}
// Prepare authorization headers
$authheaders = array(
"Authorization: Bearer " . $this->authtoken
);
$postbody = array();
//Http call for creating a file
$response = $this->http_call(self::FILE_UPLOAD_URL.$bucket.'/o?uploadType=multipart&name='.$fileName, $postbody, $authheaders);
// Has the file been created successfully?
if($response->success=="1") {
return array('status' => 'success', 'errorcode' =>'', 'errormessage'=>"", 'id' => $response->job->id);
}
else {
return $response;
}
}
http_call 関数:
public function http_call($url, $post_fields, $authheaders) {
// Make http call
$this->httpRequest->setUrl($url);
$this->httpRequest->setPostData(json_encode($post_fields));
$this->httpRequest->setHeaders($authheaders);
$this->httpRequest->send();
$response = json_decode($this->httpRequest->getResponse());
return $response;
}
これに関するヘルプは大歓迎です。