SaveAs - 把七牛云当个人云使

SaveAs是一个很方便地把网络资源(图片、视频、音频)保存到个人的七牛云上并得到一个公开url的工具。

意义有两点,

一,把感兴趣的、有价值的资源集中到扩展中,方便以后访问、使用

二,相对于第三方链接,七牛云存储上的文件访问更快速、稳定,毕竟是专门做云存储的。

SaveAs有两个部分:本地Chrome扩展 & 远程服务器。

扩展取页面元素(包括img, video, audio等标签),把资源信息发送给远程服务器,远程服务器按资源URL获取资源并上传到七牛云,成功后返回消息给本地扩展。这么做的原因是本地的chrome扩展没有足够强大到可以获取资源存储到本地,而七牛云的存储API要求上传文件,不支持URL。所以只好自己搭了一个中转站,用node.js实现,基于七牛的sdk,按照惯例,在appfog上。绑定域名saveas.nighca.me。

这么做有个缺点,因为七牛云目前还没有第三方应用接入的API,所以上传需要用户的accsessKey与secretKey。针对这个情况,我还没想到好的解决办法,

读API发现本意提供给客户端的uploadFileWithToken方法,所以现在改进上传流程:浏览器本地根据accsessKey, secretKey等生成有有效期的uploadToken,将其与资源信息一起发送给中转服务器,服务其拿uploadToken作为凭证上传文件。这样避免了通过网络发送用户信息。另外,把远程服务器的代码开源,跟extension的代码在github一个repository下。地址:https://github.com/nighca/saveas

这样使用的话,完全可以自己搭建中转服务器,有node环境就可以了。搭建在本地也是完全可以的,然后在SaveAs的选项页中设置remoteHost值,如“http://localhost:3000”。这样当然不是很便利,使用默认的remoteHost可以免去麻烦。

最后说使用方法,有兴趣尝试的到上面提到的github仓库中下载源码包解压,然后chrome -> 选项 -> 工具 -> 扩展程序 -> 载入正在开发的扩展程序 -> 选择源码包中的extension文件夹即可。

对了,很重要的,使用这个前提是,得有一个七牛云的开发者账户。然后把accessKey与secretKey以及bucket名填入SaveAs的选项页面。用作SaveAs存储的bucket需要事先在dev.qiniutek.com绑定好域名,如mysaveasbucket.qiniudn.com,否则无法publish。即存储上去了,但是没有可公开访问的链接。

浏览网页的时候对页面中的元素(包括img, video, audio等标签)右键,如果是支持的标签,右键菜单中会有“Save As...”选项,选择后输入保存的文件名(补全后缀名后也将成为存储在七牛云中的key),确认就好了。

然后就得等下...大概过会,会有结果返回过来,是以右下桌面消息的形式通知,如果有错误,消息中会显示Fail。顺利的话这时点击右上扩展中SaveAs的图标,弹出页面中会多出新保存的资源。点击即跳转到该资源的publish URL,一般格式是:“http://mysaveasbucket.qiniudn.com/XXX.xxx”。