Загрузить файл в папку на Google Диске с помощью Flutter / Dart - PullRequest
0 голосов
/ 29 января 2020

У меня есть причины не использовать клиент 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);

Мысли?

...