赞
踩
在实现点击下载文件有多种方法:
通过后端告诉浏览器header
信息实现下载:
header('Content-type: image/jpeg');
header("Content-Disposition: attachment; filename='download.jpg'");
局限:
使用window.open()
或者location.href
或者直接使用<a>
标签将页面跳转到文件地址,如果文件时浏览器无法打开的文件类型,浏览器会自动下载该文件.
局限:
实现的思路是: 在点击之后,在页面中通过js代码新建一个form
表单元素,然后通过提交表单的方式请求文件,如果文件类型是时浏览器无法打开的文件,那么就会对文件进行下载.
function download2() {
var $form = $('<form method="GET"></form>');
$form.attr('action', '/download/papers/1');
$form.appendTo($('body'));
$form.submit();
}
优点:
局限:
通过在a标签中添加download属性,即可实现点击下载任何文件,体验非常的好.
局限:
download
属性下载.file-saver内部操作:
支持download的浏览器,直接使用a标签实现下载.
不支持download的浏览器:
使用:
handleDownload(url, name) { this.getBlob(url).then(blob => { saveAs(blob, name); }) return false; }; getBlob(url) { return new Promise(resolve => { const xhr = new XMLHttpRequest(); xhr.open('GET', url, true); xhr.responseType = 'blob'; xhr.onload = () => { if (xhr.status === 200) { resolve(xhr.response); } }; xhr.send(); }) };
张鑫旭博客关于a标签download属性的介绍
file-saver插件地址
作者简介:李成文,芦苇科技web前端开发工程师,擅长网站建设、微信公众号开发、微信小程序开发、小游戏制作、企业微信制作、H5建设,专注于前端框架、交互设计、图像绘制、数据分析等研究。
个人博客:LCW blog
欢迎和我们一起并肩作战: web@talkmoney.cn
访问 www.talkmoney.cn 了解更多
提供深圳微信公众号制作,广东钉钉开发,专业的企业微信外包,高性价比的微信小程序建设,靠谱的小游戏制作,高质量的H5开发
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。