- Вы хотите загрузить текстовый файл на Google Диск, добавив содержимое с помощью Javascript.
- Вы уже смогли получить и оценить стоимость Google Диск с помощью Drive API.
- Ваш токен доступа может быть использован для загрузки файла на Google Drive.
Если я правильно понял, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.
Проблема и обходное решение:
К сожалению, на текущем этапе кажется, что gapi.client.drive.files.create
все еще не может отправить запрос, включая содержимое. Ref И, когда я тестировал метод обновления с использованием gapi
сейчас, я думаю, что gapi.client.drive.files.update
не может также отправить запрос, включая содержимое.
Так что в этом случае это требуется использовать обходной путь. В этом обходном пути используется fetch
. Когда используется fetch
, запрос multipart/form-data
легко создается.
Шаблон 1:
В этом шаблоне текстовый файл загружается на Google Диск путем включения содержимого с использованием метод create с fetch
.
Пример сценария:
const content = 'this is the content of my file';
const metadata = {name: 'test.txt', mimeType: 'text/plain'};
let form = new FormData();
form.append('metadata', new Blob([JSON.stringify(metadata)], {type: 'application/json'}));
form.append('file', new Blob([content], {type: 'text/plain'}));
fetch('https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart', {
method: 'POST',
headers: new Headers({'Authorization': 'Bearer ' + gapi.auth.getToken().access_token}),
body: form
})
.then(res => res.json())
.then(val => console.log(val));
Pattern 2:
В этом шаблоне текстовый файл создается с помощью gapi.client.drive.files.create
, а созданный текстовый файл обновляется с помощью метода обновления Drive API с помощью fetch
.
Пример сценария:
gapi.client.drive.files.create({resource: {name: 'test.txt'}})
.then(response => {
const fileId = response.result.id;
const content = 'this is the content of my file';
const metadata = {name: 'test.txt', mimeType: 'text/plain'};
let form = new FormData();
form.append('metadata', new Blob([JSON.stringify(metadata)], {type: 'application/json'}));
form.append('file', new Blob([content], {type: 'text/plain'}));
fetch('https://www.googleapis.com/upload/drive/v3/files/' + fileId + '?uploadType=multipart', {
method: 'PATCH',
headers: new Headers({'Authorization': 'Bearer ' + gapi.auth.getToken().access_token}),
body: form
})
.then(res => res.json())
.then(val => console.log(val));
});
Ссылки:
Если я неправильно понял ваш вопрос и это Я не извиняюсь.