SaveAs 2.0!
地址:
https://github.com/nighca/saveas
功能:
- 当前bucket的list,配置后在popup窗口中直接查看当前bucket中的文件列表(目前最多前100个)
- 文件的remove操作,popup窗口中点击文件左侧“x”号即可将该文件从bucket中删除
- accessKey与secretKey不会发送给远程服务器,而是一个临时的uploadToken,可以放心使用现有远程服务器 saveas.nighca.me
- 添加了对音频、视频、以及链接资源的支持,分别对audio、video、a标签右键即可。(目前在保存链接指向的页面时,若该页面非静态资源,可能会读取不到页面内容)
- 添加更多错误/成功的信息反馈
问题:
- 为什么需要额外的远程服务器
目前七牛的接口只支持本地资源上传,而chrome的插件,没有读写本地的权限。故无法通过插件直接下载、上传文件,远程服务器拿到资源url后保存到本地临时文件,然后将临时文件上传到七牛服务器。(使用客户端给的uploadToken)
list与remove操作均为插件直接与七牛服务器交互,不经过远程服务器。
笔记:
- 如何使用七牛服务
参考 七牛官方文档 及其 nodejs sdk,通过生成token并发送带token的请求实现。
- js的base64如何实现
参考网上utf8格式的base64编解码javascript实现,对于中文,将其转为utf8编码字符串后再使用前面的实现即可。utf16转utf8实现:(自互联网)
function utf16to8(str) {
var out, i, len, c;
out = "";
len = str.length;
for(i = 0; i < len; i++) { c = str.charCodeAt(i); if ((c >= 0x0001) && (c 0x07FF) {
out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
} else {
out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
}
}
return out;
}
下一步:
- 将文件的上传行为移动到插件本地实现,移除对额外服务器的依赖。
- 添加更多文件操作
- 考虑bucket未发布为静态资源的情况
- 添加audio、video、page等资源的缩略图