我正在构建一个单页的网络应用程序,旨在帮助作家完成他们的写作。我称之为#34; Just Write,Dammit!" (https://www.justwritedammit.com)。它强调进入写作流程并阻止分心。
一个潜在的功能是为用户自动保存数据,并在多个计算机/浏览器组合和会话中同步该数据。用户可以选择他们的存储提供商,即Dropbox,Google Drive或Microsoft OneDrive,完成整个OAuth舞蹈,并使所有内容直接通过浏览器和提供商运行,甚至不必触摸我的服务器。目前,该应用程序没有服务器组件。我希望在构建最小产品的同时尽量减少托管成本。最终,我可能需要一台服务器,但是现在我想尽可能地将它保留在客户端。
我还没有进入Google云端硬盘 - 所以判断保留在那里 - 但据我所知,尽管表面承诺提供API来访问文件数据,既不是Dropbox也不是罢工> [1] OneDrive实际上没有。它们提供对元数据的访问,并允许您为用户启动到本地文件系统的下载,但它们都不允许您实际将文件下载到浏览器中。
Dropbox有一个数据存储区API,可让您通过Web 存储每个用户的信息,但它不会为用户生成物理文件,并且没有干净的方式来呈现在应用程序上下文之外向用户提供数据。我使用此功能提供跨浏览器/计算机会话同步,但为用户提供物理文件,我必须使用数据实现系统从浏览器下载文件的URI,绝对不能自动化。
所以我的问题是:我错过了什么吗?这是可能的,我还没有花足够的时间吗?是否可以使用Google云端硬盘或我是否应该浪费时间?
[1]编辑:正如smarx指出的那样,这是可能的,因为我希望它与Dropbox一起使用。 Datastore API的Client类具有readFile和writeFile方法,它们完全符合我的要求。然而,问题仍然是Google Drive和Microsoft OneDrive是否具有类似的功能。
答案 0 :(得分:2)
Dropbox的完整Web API可以在浏览器中使用JavaScript(包括保存和加载文件)。有关完整的API文档,请参阅https://www.dropbox.com/developers/core/docs。
Dropbox.js是Dropbox API的JavaScript SDK的最佳选择:https://github.com/dropbox/dropbox-js。
数据存储API SDK(您已找到)还包括访问文件的方法。它基本上是dropbox.js的一个分支,但对于纯文件操作,我会坚持使用开源dropbox.js。
这是我不久前写的一篇博文,向您展示如何验证用户并将文件写入该用户的Dropbox:https://www.dropbox.com/developers/blog/71/writing-a-file-with-the-dropbox-javascript-sdk。
为方便起见,下面粘贴的代码的简短版本,但请查看博客文章以获得更实际的示例。
var client = new Dropbox.Client({ key: 'YOUR-APP-KEY-HERE' });
client.authenticate(function () {
client.writeFile('hello.txt', 'Hello, World!', function () {
alert('File written!');
});
});
答案 1 :(得分:1)
听起来您想要Drive Realtime API:https://developers.google.com/drive/realtime/
它会自动保存输入内容,处理多个同时会话之间的冲突等。