使用Google Drive API v3和Javascript将ArrayBuffer的内容上传到Google云端硬盘

时间:2016-11-04 12:42:46

标签: google-drive-api

我正在尝试使用ArrayBuffer的内容在Google云端硬盘上创建一个文件。我使用的是驱动程序aPI的Javascript和第3版。

我设法使用this code sample创建一个填充文本文件,但我找不到任何关于如何使用ArrayBuffer中的二进制数据填充文件的示例。这是可能的,还是我必须在将二进制数据上传到Google云端硬盘之前将其编码为字符串?

谷歌对v3的文档确实缺乏: - (

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我也在努力解决这个问题,并且能够通过base64ing基于UTF-8的ArrayBuffer字符串表示来实现它。它看起来像这样:

// file.data is an ArrayBuffer
var b64str = btoa(String.fromCharCode.apply(null, new Uint8Array(file.data)));

然后,您需要在驱动器api的多部分文件上载中指定Content-Transfer-Encoding以理解该文件:

// 'data' is our base64'd image that came from ArrayBuffer
var requestBody =
    '--' + boundary_string + '\n' +
    "Content-Type: application/json; charset=UTF-8\n\n" +
    JSON.stringify(metadata) + '\n' +
    '--' + boundary_string + '\n' +
    "Content-Type: " + mime + "\n" +
    "Content-Transfer-Encoding: base64" +
    data + '\n' +
    '--' + boundary_string + '--';