Создание возобновляемых файлов. Сессия загрузки на диск Google не работает через php. - PullRequest
0 голосов
/ 08 октября 2019

Пытаюсь создать сеанс для загрузки файлов на гугл-диск через resumable upload

Источник API https://developers.google.com/drive/api/v3/manage-uploads#resumable

POST https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable HTTP/1.1
Authorization: Bearer [YOUR_AUTH_TOKEN]
Content-Length: 38
Content-Type: application/json; charset=UTF-8
X-Upload-Content-Type: image/jpeg
X-Upload-Content-Length: 2000000

{
  "name": "myObject"
}

Вот определение того, что делают все заголовки http.

X-Upload-Content-Type. Необязательно. Установите в MIME-тип данных файла, которые будут передаваться в последующих запросах. Если MIME-тип данных не указан в метаданных или через этот заголовок, объект будет использоваться как application / octet-stream.

X-Upload-Content-Length. Необязательно,Задайте количество байтов данных файла, которые будут переданы в последующих запросах.

Content-Type. Требуется, если у вас есть метаданные для файла. Установите для приложения / JSON;charset = UTF-8.

Content-Length. Требуется, если вы не используете частичное кодирование передачи. Установите количество байтов в теле этого начального запроса.

Вот мой код. Моя проблема заключается в том, что код будет продолжать загружаться в браузере до истечения времени ожидания. Я увеличил время max_exection несколько раз, но та же проблема. Мне было интересно, что я сделал неправильно с заголовками curl или с самими кодами ..

    ini_set('max_execution_time', 3000);
    $url= 'https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable';
    $token='my token goes here';

    $file_name = "nancy.zip";
    echo $fsize =filesize($file_name);
    $mType='application/zip';

    echo $chunkSize = 1 * 1024 * 1024; // 1mb

    $datas = '{
        "name": "'.$file_name.'"
     }';
    /*
    $header=array(                                                                          
    //"Host: www.googleapis.com",                                                                                
    "Authorization: Bearer $token",
    "Content-Length: $chunkSize",
    "Content-Type: application/json; charset=UTF-8",
    "X-Upload-Content-Type: $mType",
    "X-Upload-Content-Length: $fsize"
    );
    */
//ziganotschka suggestions
$header=array(
 "Authorization: Bearer".$token, 
"Content-Length: ".$chunkSize, 
"Content-Type: application/json; charset=UTF-8",
 "X-Upload-Content-Type:".$mType,
 "X-Upload-Content-Length: ".$fsize ); 

    $ch=curl_init(); 
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_CUSTOMREQUEST,'POST');
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);  
    curl_setopt($ch,CURLOPT_POSTFIELDS, $datas);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);


    $res = curl_exec($ch); 
    curl_close($ch);


    var_dump($res);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...