У меня есть причины не использовать клиент ga.Drive для загрузки файлов, поэтому я использую обычный http для этого. Нет никакого способа обновить sh токен доступа после его истечения, поэтому я не использую перехватчики вручную. так что я пишу сложный способ загрузки;)
Если у кого-то есть опыт, я могу спросить, что не так. Я могу загрузить файл, но моя проблема в том, что метаданные, кажется, не читаются, так как я всегда получаю Без названия, и он всегда загружается в папку root.
Затем я получаю ошибку 400, если я установил тип контента для multipart / related.
Это код.
Uri uri = Uri.parse('https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart&fields=*');
MultipartRequest request = MultipartRequest('POST', uri);
String filename = path.basename(file.absolute.path);
Map<String, dynamic> post = {
'name': filename,
'parents': [ folderId ]
};
request.headers["Authorization"] = "Bearer " + accessToken;
request.headers['Content-Type'] = 'multipart/related; boundary=foo_bar_baz';
request.fields['metadata'] = jsonEncode(post) + "type=application/json;charset=UTF-8";
// Also tried this line below instead of above.
// request.files.add(MultipartFile.fromString('metadata', jsonEncode(post), contentType: MediaType('application', 'json')));
request.files.add(await MultipartFile.fromPath(filename, file.path, contentType: MediaType('application', 'json')));
httpClient.send(request);
Мысли?