我一直在尝试将Google云端硬盘文档附加到我的php gmail api撰写框中。
到目前为止,我已设法在选择文件上获取文件ID,但无法找到如何将该file.download url附加到邮箱的正确方法。有没有办法这样做?
我也尝试使用以下代码下载文件,但显示错误“只能下载二进制文件”
var downloadUrl = 'https://www.googleapis.com/drive/v2/files/' + file.id + '?alt=media';
//var downloadUrl2 = file.downloadUrl1;
if (downloadUrl) {
//var accessToken = gapi.auth.getToken().access_token;
//debugger;
var xhr = new XMLHttpRequest();
xhr.open('GET',downloadUrl);
debugger;
xhr.setRequestHeader('Authorization', 'Bearer ' + AUTH_TOKEN);
xhr.onload = function() {
alert(xhr.responseText);
};
xhr.onerror = function() {
alert('Error');
};
xhr.send();
} else {
alert('No Url');
}
答案 0 :(得分:0)
我也尝试使用以下代码下载文件,但显示错误"只能下载二进制文件
这意味着您需要先将其转换为二进制。我建议你考虑使用:
WindowBase64.btoa() - 方法从String对象创建base-64编码的ASCII字符串,其中字符串中的每个字符都被视为二进制数据的字节。 var encodedData = window.btoa(stringToEncode);
arraybuffer& Uint8Array - 此示例将图像作为二进制文件读取,并从原始字节创建一个8位无符号整数数组 oReq.onload = function(oEvent){ var arrayBuffer = oReq.response; //注意:不是oReq.responseText if(arrayBuffer){ var byteArray = new Uint8Array(arrayBuffer); for(var i = 0; i< byteArray.byteLength; i ++){ //对数组中的每个字节执行某些操作 } } }
将文件从Google云端硬盘附加到gmail api撰写邮件
来自ctrlq tutorial 首先创建符合RFC 2822标准的MIME邮件,然后调用Gmail API将指定的邮件发送到“收件人”,“抄送”和“密件抄送”标头中的收件人。我们使用带有messages / send方法的/ upload URI来上传带有消息的文件,并将uploadType设置为media,用于上传没有任何元数据的文件。
添加个人阅读: sending Email with attachment的GMAIL API。