На основании документации по Google Drive API Я пытаюсь загрузить файл в папку root на Google Диске. У меня есть аутентификация пользователя через Google Sign In, и это не было проблемой. Я получаю сообщение об ошибке 411, возвращаемое сервером:
«Для запросов POST требуется заголовок Content-length
. Это все, что мы знаем».
У меня есть Заголовок длины содержимого, но, похоже, он не принят. Вот код, который у меня есть,
Uri uri = Uri.parse('https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable');
http.MultipartRequest request = new http.MultipartRequest('POST', uri);
request.headers["Authorization"] = header['Authorization'];
request.headers['content-type'] = "application/json; charset=UTF-8";
request.headers['X-Upload-Content-Type'] ='video/mp4';
request.headers['X-Upload-Content-Length'] = lengthInBytes.toString();
request.headers['name'] = fileName;
request.headers['content-length'] = (request.contentLength).toString();
//request.files.add(await http.MultipartFile.fromPath('$fileName', file.path,));
print("request.toString: " + request.toString());
http.StreamedResponse response = await request.send();
print('ok: ' + response.statusCode.toString());
response.stream.transform(utf8.decoder).listen((value) {
print(value);
});
Единственная знакомая мне строка выглядит как fileName, так как документация на сайте API немного отличается, и я не уверен, что кодирую это правильно. Вот пример API на сайте Google:
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"
}
Я могу сделать многокомпонентную загрузку для файла размером около 5 МБ, но мне нужно иметь возможность загружать более крупные файлы, и единственная возможность - возобновление. Я могу опубликовать код, состоящий из нескольких частей, который работает при необходимости.