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

Dat*_*ump 6 google-drive-api

我正在尝试使用ArrayBuffer的内容在Google云端硬盘上创建一个文件.我正在使用Drive aPI的Javascript和第3版.

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

谷歌的v3文档真的缺乏:-(

任何帮助都非常感谢.

Sco*_*t C 0

我也遇到了这个问题,并且能够通过对 ArrayBuffer 的基于 UTF-8 的字符串表示进行 base64 处理来使其工作。它看起来像这样:

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

然后,您需要在分段文件上传中指定 Content-Transfer-Encoding,以便 Drive api 理解该文件:

// '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 + '--';
Run Code Online (Sandbox Code Playgroud)