Я пытаюсь загрузить файлы на Google Диск через Curl в PHP, используя этот образец API: API загрузки файлов на Google Диск.
Вот моя проблема:
Когда я запускаю код ниже. Я получил успешное сообщение, как показано ниже, но в эту папку не загружен ни один файл.
Вот ответ Google API
string(121) "{ "kind": "drive#file", "id": "171bgh8-nDojxGjd_Fxxxxxxx", "name": "Untitled", "mimeType": "image/png" } "
Вот код
$file_path = 'baby.png';
$folder_id = 'id of the folder goes here'; // ID of the folder you want to upload to
$mimetype= mime_content_type($file_path);
$filename= basename($file_path);
$headers = array(
"Authorization: Bearer $access_token",
"Content-Type: $mimetype"
);
$post_fields = json_encode(array(
'name' => basename($file_path),
'parents' => array($folder_id),
'metadata' => "{name :$filename};type=application/json;charset=UTF-8",
'file' => new CURLFile($file_path, $mimetype),
));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
$response = curl_exec($ch);
curl_close($ch);
var_dump($response);
Как мне загрузить файл в эту папку через идентификатор папки?






Я не уверен, в чем причина повторного изобретения волдыря.
Google уже предоставляет SDK для этой цели.
сначала установите его с помощью композитора
composer require google/apiclient
После этого вы можете попробовать что-то подобное
use Google\Client;
use Google\Service\Drive;
# TODO - PHP client currently chokes on fetching start page token
function uploadBasic()
{
try {
$client = new Client();
$client->useApplicationDefaultCredentials();
$client->addScope(Drive::DRIVE);
$driveService = new Drive($client);
$fileMetadata = new Drive\DriveFile(array(
'name' => 'photo.jpg'));
$content = file_get_contents('../files/photo.jpg');
$file = $driveService->files->create($fileMetadata, array(
'data' => $content,
'mimeType' => 'image/jpeg',
'uploadType' => 'multipart',
'fields' => 'id'));
printf("File ID: %s\n", $file->id);
return $file->id;
} catch(Exception $e) {
echo "Error Message: ".$e;
}
}
Вы можете проверить документы здесь
если да, то даже попробуйте использовать HTTP-клиент, чтобы помочь вам в этом, чем скручивать, как с помощью клиента жрать
@NancyMoore, но почему ты хочешь использовать для этого Curl? SDK избавит вас от всех хлопот и хлопот, связанных с созданием запроса правильным способом. Зачем изобретать велосипед?
Спасибо @Joseph, но я хочу использовать Curl