1

我目前正在使用 Dropbox 客户端 js 脚本将 zip 文件推送到一个文件夹(在测试中,几 k,在生产中,几百兆) - 目前没有服务器/后端,所以我发布来自数组缓冲区,而不是服务器 url。

    var zip = new JSZip();
    zip.file("test.txt", "Hello World\n");
    var content = zip.generate({type:"arraybuffer"});
    // ... code to pick a dropbox folder ...//
    client.writeFile(url+"/"+fileName, content, function(error){ ... etc

这一切都很好——客户端能够编写二进制文件(很遗憾,Dropbox 自己的Saver无法做到这一点)。我正在尝试查看 Kloudless 是否能够执行相同的操作,因为在某些时候我还需要支持 google、box 等。https://github.com/kloudless/file-explorer/关于其保护程序的文档说这些文件是一组 url ..

explorer({
...
files: [{
  "url": "http://<your image url>",
  "name": "filename.extension"
},

它似乎不喜欢使用 的本地存储文件引用URL.createObjectURL(blob),所以我猜测 api 是告诉远程服务拉文件而不是推送它们的数据。

4

1 回答 1

0

您是正确的,Kloudless API 后端服务器将文件从 URL 流式传输到您希望将文件上传到的任何云服务中的最终目的地(例如 Dropbox 帐户中的文件夹)。

如果文件仅存在于客户端,我建议使用Kloudless选择器来提示用户选择一个文件夹来保存文件,然后通过客户端手动将文件数据上传到该目的地.

为此,请参考此示例配置:https ://jsfiddle.net/PB565/139/embedded/

我已设置retrieve_tokenstrue这样,我的客户端 JavaScript 不仅会接收用户选择将数据上传到的文件夹的元数据,还会接收用于访问用户帐户的 Bearer 令牌。这允许客户端 JavaScript 然后向 Kloudless 发出上传分段上传请求,以将文件数据上传到该文件夹​​。分段上传的优点是上传一个块的错误不需要重试整个上传。

请务必将托管文件资源管理器的域添加到您的 Kloudless 应用程序的受信任域(在应用程序详细信息页面上),以便它实际上可以在响应 JS 回调中接收承载令牌。在我的 JSFiddle 示例中,我必须将“fiddle.jshell.net”添加到我的应用程序的受信任域列表中,以便能够接收 Bearer 令牌以执行从客户端到 Kloudless API 的进一步请求。

于 2016-07-08T21:33:42.780 回答