Как правильно загрузить файл на Google Диск через Curl PHP

Я пытаюсь загрузить файлы на 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);

Как мне загрузить файл в эту папку через идентификатор папки?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я не уверен, в чем причина повторного изобретения волдыря.

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;
    } 

}

Вы можете проверить документы здесь

Спасибо @Joseph, но я хочу использовать Curl

Nancy Moore 20.06.2024 00:49

если да, то даже попробуйте использовать HTTP-клиент, чтобы помочь вам в этом, чем скручивать, как с помощью клиента жрать

Joseph 20.06.2024 00:51

@NancyMoore, но почему ты хочешь использовать для этого Curl? SDK избавит вас от всех хлопот и хлопот, связанных с созданием запроса правильным способом. Зачем изобретать велосипед?

ADyson 20.06.2024 00:59

Другие вопросы по теме