javascript - 如何使用 JS SDK 将文件上传到 Dropbox?
问题描述
我不确定是否将文件作为数组缓冲区、dataURI 或二进制流读取。哪个会更好?
此外,这些方法不会占用大量内存并使应用程序/设备变慢,尤其是在上传 150mb 左右的大文件时?
还有一件事是文件是否会像原来一样“可打开”?示例:如果我使用其中一种方法读取 .zip 文件,然后再下载该文件,它仍会以 ZIP 格式打开吗?
由于这个类比,我部分感到困惑:我们可以轻松查看 JPG 或 PNG 文件,也可以使用它们的 dataURI(base-64)在浏览器中显示它们......但是当我们将该 base-64 字符串保存为 JPG或 PNG 文件,则无法看到图像。因此,我不明白我应该如何读取文件的内容才能将其上传到保管箱(请记住,文件也可以在 150MB 左右)并且仍然保留文件的原始状态。
假设我要上传 .mp3 或 .zip 文件。那么我应该如何使用 Javascript Dropbox SDK 将其上传到用户的保管箱帐户?
请消除这种困惑并帮助我!
谢谢!
解决方案
使用Dropbox API v2 JavaScript SDK时:
- 上传文件时,您应该在
contents
参数中提供数据,例如在方法filesUpload
中。这目前应该支持string
或Buffer
。
在 node here 中有一个例子。
- 对于像这样的大文件,您应该改用上传会话,它允许您上传较小的文件:
这里有一个使用这些的例子。您可以选择制作每件作品的大小。
- 您上传到 Dropbox 的文件将包含您在上传调用中提供的数据。因此,如果您上传一个 zip 文件,然后稍后再次下载,它仍然是相同的格式,对于 zip 文件,这意味着您将能够解压缩它。
请注意,在上传文件数据时,您不应对文件数据应用任何额外的编码。例如,在浏览器中显示图像时,您可以对数据进行 base64 编码以使其在数据 URI 中可用,但在上传文件进行存储时不应该这样做。
推荐阅读
- c - 如何在下面的代码中处理 \n(换行符)
- r - str_replace_all 基于使用 r 的数据框的句子
- kotlin - 是否可以在每个月的第一天使用 scheduleAtFixedRate 触发一个函数?
- karate - 如何使用空手道框架在 URL 之间动态创建具有路径的 URL
- javascript - 如何根据某些分隔符解析 html 字符串?
- python - 带有 continue 关键字的无限 while 循环
- python - 使用应用程序工厂模式将 Celery 与 Flask 集成:最大递归深度误差
- mysql - mysql 8.0.15 用户的哪个 JDBC 连接器
- python - 无法关闭 gtk 对话窗口
- sql - T-SQL 组合表