The Dropbox Chooser and Saver tools对于这两项任务似乎非常酷:
那是不对称的。 This StackOverflow question询问是否可以直接从客户端向Dropbox Saver发送文件。 (如果编写一个仅限客户端的应用程序,希望Dropbox代表服务器,这尤其方便。)
一个答案中的评论说核心API或Sync API可以这样做。但如果不需要,引入那些更复杂的API将是一种耻辱; Chooser和Saver非常易于使用。此外,我不清楚在这种情况下,Saver提供的UI是否仍然可用。
我的问题:将文件从客户端(例如,createObjectURL
网址中的数据)保存到用户Dropbox的最简单方法是什么? ,如果可能的话仍然使用Saver UI? (最简单的"我的意思是简短,易于阅读和维护的代码。)具体的JavaScript代码将是理想的。
答案 0 :(得分:1)
正如James Foster在上面的评论中所述,Dropbox现在接受数据URI。因此,如果一个人拥有数据URI形式的数据,可以按照记录的here来调用Dropbox.save(dataURI,filename,options)
。
但是存在一个小问题:要创建数据URI,通常的方式(使用FileReader)需要异步调用readAsDataURL。但Dropbox.save()
只能在响应用户交互(例如点击)时被调用。因此,在单击处理程序中,如果必须首先异步创建数据URI,那么当您进入回调时,将无法再调用Dropbox.save()
函数。
就我而言,可以在没有FileReader API的情况下创建数据URI,因为我只存储HTML数据。可以简单地编写"data:text/html,"+encodeURIComponent(myHTMLData)
来创建数据URI,如文档here所述。对于非文本数据,解决方案不起作用,并且您必须尝试更复杂的事情,或许比较记录here。