gpt4 book ai didi

javascript - 从 Google Drive 导出 docx 并转换为 base64

转载 作者:行者123 更新时间:2023-11-29 10:59:15 25 4
gpt4 key购买 nike

我正在尝试从 Google Drive 导出 DOCX 文件。

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

例如,它适用于图像,但 Word 显示文件已损坏,无法打开

我认为 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);

结果 - 文件已损坏,无法打开

我的最终解决方案:

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

最佳答案

这个解决方法怎么样?同样在我的环境中,gapi.client.drive.files.export 不起作用。所以我将 XMLHttpRequest 与 xhr.responseType = "blob" 一起使用。

示例脚本:

var accessToken = gapi.auth.getToken().access_token;
var id = "### fileId ###";
var url = "https://docs.google.com/feeds/download/documents/export/Export?id=" + id + "&format=docx&access_token=" + accessToken;
var xhr = new XMLHttpRequest();
xhr.open('get', url);
xhr.responseType = "blob";
xhr.onload = function() {
var reader = new FileReader();
reader.onload = function() {

console.log(reader.result); // dataURI

}
reader.readAsDataURL(this.response);
};
xhr.send();

引用:

如果这不是您想要的,我很抱歉。

关于javascript - 从 Google Drive 导出 docx 并转换为 base64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50516262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com