Tôi đang gặp một vấn đề cố gắng để tải về một tập tin từ Google Cloud Storage sử dụng client php tìm thấy tại https://code.google.com/p/google-api-php-client/Tải file sử dụng google-api-php-client
Tôi đã chứng thực bản thân mình ok và sử dụng mã tôi sau có thể trả về một đối tượng, trong đó có các liên kết đến tập tin của tôi
$this->storageService = new Google_StorageService($this->client);
$this->objects = $this->storageService->objects;
$options = array(
'prefix' => 'REPORT_NAME_2013-07-01'
);
$bucket_contents = $this->objects->listObjects($bucket, $options);
Câu trả lời là một cái gì đó giống như ...
{
"kind": "storage#object",
"id": "<bucket>/<report>.csv/1001",
"selfLink": "https://www.googleapis.com/storage/v1beta2/b/<bucket>/o/<report>.csv",
"name": "<report>.csv",
"bucket": "<bucket>",
"generation": "1001",
"metageneration": "1",
"contentType": "application/csv",
"updated": "2013-07-22T10:21:08.811Z",
"size": "806",
"md5Hash": "wT01i....",
"mediaLink": "https://www.googleapis.com/storage/v1beta2/b/<bucket>/o/<report>.csv?generation=1001&alt=media",
"owner": {
"entity": "user-00b........",
"entityId": "00b490......."
},
"crc32c": "8y........",
"etag": "CPjZ.........."
}
Nhưng làm thế nào để tôi đi về tải f ile sử dụng ứng dụng khách PHP của Google ... Tôi không thể sử dụng file_get_contents vì nó không có kiến thức về các chi tiết xác thực. Điều tốt nhất tôi đã tìm thấy là một cái gì đó mà sử dụng Google_Client nhưng câu trả lời chỉ đơn giản chứa dữ liệu meta và không có nội dung đối tượng/file
$request = new Google_HttpRequest($object['selfLink']);
$response = $this->client->getIo()->authenticatedRequest($request);
Không, bạn phải sử dụng các url ký, vì vậy người dùng có thời gian giới hạn truy cập đến các tệp và chỉ với url. Xem https://cloud.google.com/storage/docs/access-control#Signed-URLs – Paul