Dropbox Chooser 和 Saver 工具 https://www.dropbox.com/developers/dropins对于这两项任务来说似乎非常酷:
- 让用户从 Dropbox 中选择一个文件,页面就可以下载它(即 Dropbox 到客户端)。
- 让用户在 Dropbox 中选择一个目的地,将服务器上某个 URL 上的文件保存到该目的地(即服务器到 Dropbox)。
那是不对称的。这个 StackOverflow 问题 https://stackoverflow.com/questions/24925988/dropbox-is-drop-ins-saver-can-i-upload-files-from-a-computer询问是否可以直接从客户端将文件发送到 Dropbox Saver。 (如果您正在编写一个仅限客户端的应用程序,并希望 Dropbox 代替服务器,这会特别方便。)
一个答案中的评论说 Core API 或 Sync API 可以这样做。但如果不需要的话引入那些更复杂的API就太可惜了;选择器和保护器非常易于使用。此外,我不清楚在这种情况下 Saver 提供的 UI 是否仍然可用。
我的问题:从客户端保存文件的最简单方法是什么(例如,从createObjectURL
URL)进入用户的 Dropbox,如果可能的话仍然使用 Saver UI? (我所说的“最简单”是指简短、易于阅读和维护的代码。)特定的 JavaScript 代码将是理想的选择。
正如上面 James Foster 的评论一样,Dropbox 现在接受数据 URI。因此,如果拥有数据 URI 形式的数据,则可以调用Dropbox.save(dataURI,filename,options)
据记录here https://www.dropbox.com/developers/saver.
但有一个小问题:要以通常的方式(使用 FileReader)创建数据 URI,需要异步调用读为数据URL https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURL. But Dropbox.save()
只能在响应用户交互(例如单击)时调用。因此,在点击处理程序中,如果您必须首先异步创建数据 URI,那么当您到达回调时,Dropbox.save()
函数不能再被调用。
就我而言,可以在没有 FileReader API 的情况下创建数据 URI,因为我只存储 HTML 数据。可以简单地写"data:text/html,"+encodeURIComponent(myHTMLData)
创建数据 URI,如文档所示here https://developer.mozilla.org/en-US/docs/Web/HTTP/data_URIs。对于非文本数据,该解决方案将不起作用,您必须尝试更复杂的方法,也许就像记录的那样here https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)