a 标签实现下载,在移动端变成了预览,让它一直能下载怎么改?
a 标签什么时候是预览什么时候是下载?
<a class="downloadButton" target="_blank" href="//xxxxx.pdf"
download="xxxx.pdf">下载附件</a>
function downloadFile() {
var xhr = window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
xhr.open('get', './asset/biddingDocuments.pdf', true);
xhr.onreadystatechange = function () { };
xhr.setRequestHeader('Content-Type', 'application/octet-stream');
xhr.send('GET', './asset/biddingDocuments.pdf', true);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
// 数据在 this.response 保存
var blob = new Blob([this.response], {
type: "application/octet-stream"
});
// 创建a链接 href链接地址 download为下载下来后文件的名称
var aa = document.createElement('a');
aa.href = URL.createObjectURL(blob);
aa.innerHTML = 'a链接';
aa.download = 'aa.pdf';
aa.style.display = 'none'; //隐藏a标签 直接调用a标签的点击事件
document.body.appendChild(aa);
aa.click();
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我一般使用ajax来做这类的,查看demo
没办法使用download实现,主要方案是下载头,你可以把content-type返回成一个不识别的即可,当然,最好的方案是判断ua,然后返回针对性类型。
打开控制台看你的请求
如果你的图片请求返回的响应的
Content-Type
是image/*,audio/*
等浏览器可以识别打开的文件,就不会去执行下载事件如果你想要下载,不想要预览,请求的响应可以改成返回如
Content-Type:application/octet-stream
, 指的是任意类型的二进制流数据,浏览器无法识别打开流数据,就会去下载。