突然接到一个需求,是用chrome extensions下载一批文件,但文件名需要是url中的id名字。
要修改下载过来的文件名?这需求挺奇葩,但做为开发,一定要想办法把完成这样的下需要。
第一步,看chrome插件开发流程,一个manifest文件指定一个html文件,就可以完成hello world的制作。
一般的插件都会把脚本放到宿主页面上,通过宿主上去的脚本和插件里的脚本进行消息交互,如此可以把宿主页面上的dom节点和相关信息通过消息传递传递到插件脚本。
需求方给了我一个download master的插件,他的功能都是完整的,只是下载过来的文件名是服务器里用content-disposition指定了文件名的文件。
想了四个办法来完成修改文件名。
1.如果下载的文件是网页上的静态文件,如图片,html,css等资源文件,可以生成一个a标签,把href赋值成资源的url,同时给a标签的download属性赋值要下载后的文件名, 再用一个鼠标模拟点击的方法,自动下载上面的这些资源,下面的这段脚本是放到宿主上去的脚本里,通过消息传递触发
function downloadResource(url){
var link = document.createElement('a');
a.href= url;
a.download = "xxxxx.xxxx";
var event = document.createEvent("MouseEvents");
event.initMouseEvent("click", true, false);
link.