Я пытаюсь экспортировать файлы DOCX с Google Диска.
gapi.client.drive.files.export({ fileId: id, alt: 'media', mimeType: _mimeType }).then((_response) => {
var fileType = _response.headers['content-type'];
var base64 = new Buffer(_response.body, 'utf8').toString('base64');
var dataURI = 'data:' + fileType + ';base64,' + base64;
Я отправляю его на https://content.googleapis.com/drive/v3/files
:
mimeType: application/vnd.openxmlformats- officedocument.wordprocessingml.document
alt: media
key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Это работает, например, для изображений, ноСлово показывает The file is corrupt and cannot be open
.
Я думаю, что-то не так с base64
.
Как мне решить эту проблему?
ОБНОВЛЕНИЕ: Я пыталсяоткройте файл на FE, чтобы убедиться, что это не проблема BE:
var reader = new FileReader();
var out = new Blob([_response.body], { type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document" });
reader.onload = function (e) {
window.location.href = reader.result;
}
reader.readAsDataURL(out);
Результат - The file is corrupt and cannot be open
МОЕ ФИНАЛЬНОЕ РЕШЕНИЕ:
var xhr = new XMLHttpRequest();
xhr.open("GET", "https://content.googleapis.com/drive/v3/files/" + id + '/export?alt=media&mimeType=' + _mimeType, true);
xhr.setRequestHeader('Authorization', 'Bearer ' + this.access_token);
xhr.responseType = 'arraybuffer'
xhr.onload = () => {
var base64 = 'data:' + _mimeType +';base64,' + this.base64ArrayBuffer(xhr.response);
resolve(base64);
}
xhr.send();
base64ArrayBuffer
от https://gist.github.com/jonleighton/958841