Пытаюсь создать сеанс для загрузки файлов на гугл-диск через 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);