gpt4 book ai didi

javascript - Google Drive API V3 (javascript) 更新文件内容

转载 作者:可可西里 更新时间:2023-11-01 02:01:46 26 4
gpt4 key购买 nike

我想使用 Google Drive API V3 (javascript) 更新 Google 文档的内容:

https://developers.google.com/drive/v3/reference/files/update

我能够更新文件元数据(例如名称),但文档不包含实际文件内容的补丁语义。有没有办法在 gapi.client.drive.files.update 请求中将 JSON.stringify() 值作为参数传递:

var request = gapi.client.drive.files.update({
'fileId': fileId,
'name' : 'Updated File Name',
'uploadType': 'media',
'mimeType' : 'application/vnd.google-apps.document'
});

var fulfilledCallback = function(fulfilled) {
console.log("Update fulfilled!", fulfilled);
};
var rejectedCallback = function(rejected) {
console.log("Update rejected!", rejected);
};

request.then(fulfilledCallback, rejectedCallback)

最佳答案

有两个问题:

  1. JavaScript 客户端库不支持媒体上传。
  2. Google 文档文件没有原生文件格式。

您可以通过在 XHR 之上编写自己的上传功能来解决问题 #1。以下代码应该适用于大多数现代网络浏览器:

function updateFileContent(fileId, contentBlob, callback) {
var xhr = new XMLHttpRequest();
xhr.responseType = 'json';
xhr.onreadystatechange = function() {
if (xhr.readyState != XMLHttpRequest.DONE) {
return;
}
callback(xhr.response);
};
xhr.open('PATCH', 'https://www.googleapis.com/upload/drive/v3/files/' + fileId + '?uploadType=media');
xhr.setRequestHeader('Authorization', 'Bearer ' + gapi.auth.getToken().access_token);
xhr.send(contentBlob);
}

要解决问题 #2,您可以向云端硬盘发送 Google 文档可以从中导入的文件类型,例如 .txt、.docx 等。以下代码使用上述函数使用纯文本更新 Google 文档的内容:

function run() {
var docId = '...';
var content = 'Hello World';
var contentBlob = new Blob([content], {
'type': 'text/plain'
});
updateFileContent(fileId, contentBlob, function(response) {
console.log(response);
});
}

关于javascript - Google Drive API V3 (javascript) 更新文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40600725/

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