一般文件下载的方法:
1.生成a标签,href='文件地址',click();
2,生成form的提交;
两种方法都需要click();
而jQuery的trigger()对a标签无用;解决办法:
1.利用js的click()方法去触发;
2.var a = $('<a href="'+res.href+'" download="'+res.fileName+'"><input id="export_file_btn" type="hidden"/></a>'); $(document.body).append(a); $('#export_file_btn').trigger('click');
3.由于a标签下载文件中文名乱码问题(IE)
这是因为文件名传给后台时,url会对中文名进行转码,而unicode对中文转码会出现位置错乱导致乱码,需要调用encodeURI或者encodeURIComponent方法对中文进行转码,后台就可以不对文件名进行处理(tomcat下);
4,二进制文件流的下载
利用a标签的href属性;
href="URL.createObjectURL(new Blob([content]))";download = "filename"实现下载,火狐浏览器的兼容性a标签需要在dom结构上;img标签的src也可以,用来实现图片预览;
方法与对象:Blob;CreateObjectURL;fileReader;基础兼容性ie10以上;结合formData可以实现二进制文件上传,