将文件从Google云端硬盘附加到gmail api撰写邮件

时间:2016-07-05 08:42:58

标签: javascript php google-drive-api gmail gmail-api

我一直在尝试将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');
  }

1 个答案:

答案 0 :(得分:0)

我也尝试使用以下代码下载文件,但显示错误"只能下载二进制文件

这意味着您需要先将其转换为二进制。我建议你考虑使用:

  1. WindowBase64.btoa() - 方法从String对象创建base-64编码的ASCII字符串,其中字符串中的每个字符都被视为二进制数据的字节。 var encodedData = window.btoa(stringToEncode);

  2. 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 ++){ //对数组中的每个字节执行某些操作 } } }

  3. 将文件从Google云端硬盘附加到gmail api撰写邮件

    来自ctrlq tutorial 首先创建符合RFC 2822标准的MIME邮件,然后调用Gmail API将指定的邮件发送到“收件人”,“抄送”和“密件抄送”标头中的收件人。我们使用带有messages / send方法的/ upload URI来上传带有消息的文件,并将uploadType设置为media,用于上传没有任何元数据的文件。

    添加个人阅读: sending Email with attachment的GMAIL API。