gpt4 book ai didi

javascript - Google Drive API 未正确处理 Base64 文件

转载 作者:行者123 更新时间:2023-11-28 03:41:59 25 4
gpt4 key购买 nike

我正在尝试使用 Google Drive API v3 将 PDF 文件作为 Base64 字符串发送到我的驱动器文件夹,但我得到的唯一结果是一个显示 Base64 字符串的文件。

我的代码:

const boundary = '-------314159265358979323846';
const delimiter = "\r\n--" + boundary + "\r\n";
const close_delim = "\r\n--" + boundary + "--";
const metadata = {
'name': 'myFile.pdf',
'mimeType': 'application/pdf\r\n\r\n'
};

const multipartRequestBody = delimiter +
'Content-Type: application/json\r\n\r\n' +
JSON.stringify(metadata) +
delimiter +
'Content-Encoding: ' + 'base64\r\n' +
'Content-Type: ' + 'application/pdf\r\n\r\n' +
data +
close_delim;

const request = auth.request({
url: 'https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart',
method: 'post',
headers: {
'Content-Type': `multipart/related; boundary=${boundary}`,
'Content-Length': multipartRequestBody.length
},
data: multipartRequestBody
});
const response = await request;

我到处搜索,尝试了很多组合,但我无法完成这项工作。有人有想法吗?

最佳答案

我已成功使用以下代码将 pdf 和其他类型的文件发送到 Google 云端硬盘:

    var user = gapi.auth2.getAuthInstance().currentUser.get();
var oauthToken = user.getAuthResponse(true).access_token;

var boundary = 'foo_bar_baz';

var data = '--' + boundary + '\n';
data += 'content-type: application/json; charset=UTF-8' + '\n\n';
data += JSON.stringify(metadata) + '\n';
data += '--' + boundary + '\n';

var dataURLparts = file.data.split(',', 2);
var dataURLheaderParts = dataURLparts[0].split(':');
var dataURLheaderPayloadParts = dataURLheaderParts[1].split(';');

data += 'content-transfer-encoding: ' + dataURLheaderPayloadParts[1] + '\n';
data += 'content-type: ' + dataURLheaderPayloadParts[0] + '\n\n';

data += dataURLparts[1] + '\n';
data += '--' + boundary + '--';

console.log("uploading " + file.info.name);

$.ajax({
type: 'POST',
url: 'https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart',
beforeSend: function (xhr) {
xhr.setRequestHeader("Authorization", "Bearer " + oauthToken);
},
contentType: 'multipart/related; boundary=' + boundary,
data: data,
processData: false
}).done(function(response) {
console.log(response);
});

示例中的文件对象来自 HTML <input type="file">元素,因此内容类型和内容传输编码可以从输入元素中获取。还有其他示例,您可以查看图像的外观(base64 编码): Send post request on Google API using javascript on browser 。我正在使用 jQuery 来发布数据。

关于javascript - Google Drive API 未正确处理 Base64 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48855634/

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