Javascript 谷歌硬盘RESTAPI
我遇到了google drive rest api的问题。我有一个按钮,当用户点击时,我从后端得到一个blob excel文件,并将该文件上传到google drive。该文件正在上传到谷歌硬盘,但当我打开它时,它显示“[objectblob]”。实际内容不在文件中。这是我创建文件的函数。我从这里找到了这个解决方案: 我正在从后端传入文件名和blob excel文件,如下所示:Javascript 谷歌硬盘RESTAPI,javascript,google-drive-api,Javascript,Google Drive Api,我遇到了google drive rest api的问题。我有一个按钮,当用户点击时,我从后端得到一个blob excel文件,并将该文件上传到google drive。该文件正在上传到谷歌硬盘,但当我打开它时,它显示“[objectblob]”。实际内容不在文件中。这是我创建文件的函数。我从这里找到了这个解决方案: 我正在从后端传入文件名和blob excel文件,如下所示: fetch('/home/generateexcel', { method:
fetch('/home/generateexcel', {
method: 'POST',
body: JSON.stringify(postData),
headers: {
"Content-Type": "application/json"
},
}).then(function (response) {
response.blob().then(function (result)
UploadExcelFile('newfile', result)
});
}).catch(function (err) {
// Error :(
});
- 您想将下载的xlsx文件上载到Google Drive
- 您已经确认可以下载xlsx文件
- 上传xlsx文件时,您希望转换为Google电子表格
- 您可以使用驱动器API和访问令牌上载文件
FormData()
创建请求主体,并使用fetch()
请求驱动API。我认为有几种方法可以解决你的情况。所以,请把这看作是其中之一
修改脚本:
我修改了UploadExcelFile()
。请修改如下内容,然后重试
function UploadExcelFile(name, data) {
var metadata = {
name: name,
mimeType: "application/vnd.google-apps.spreadsheet",
};
var form = new FormData();
form.append('metadata', new Blob([JSON.stringify(metadata)], {type: 'application/json'}));
form.append('file', data);
fetch('https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart&fields=id,name,kind', {
method: 'POST',
headers: new Headers({'Authorization': 'Bearer ' + gapi.auth.getToken().access_token}),
body: form
}).then((res) => {
return res.json();
}).then(function(val) {
console.log(val);
});
}
在我的环境中,我可以确认这个脚本是有效的。但如果这在你的环境中不起作用,我道歉。谢谢@Tanaike,你是个救命恩人。我花了将近两天的时间试图弄明白这一点。您的解决方案对我有用。@欢迎光临。我很高兴你的问题解决了。也谢谢你。
function UploadExcelFile(name, data) {
var metadata = {
name: name,
mimeType: "application/vnd.google-apps.spreadsheet",
};
var form = new FormData();
form.append('metadata', new Blob([JSON.stringify(metadata)], {type: 'application/json'}));
form.append('file', data);
fetch('https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart&fields=id,name,kind', {
method: 'POST',
headers: new Headers({'Authorization': 'Bearer ' + gapi.auth.getToken().access_token}),
body: form
}).then((res) => {
return res.json();
}).then(function(val) {
console.log(val);
});
}