使用a标签下载**.txt文件, 而不是直接打开 | 您所在的位置:网站首页 › google浏览器直接打开文件 › 使用a标签下载**.txt文件, 而不是直接打开 |
今天有个使用a标签下载一个 .txt 文件,但是使用了不少方法,在点击下载的时候总是会直接打开被下载的文件,但是下载其他格式的文件就不会;也在网上找了不少资料 一、尝试href + download方法有得说
也有人说
要不就是这样
也使用过这种 function download(filename, text) { var element = document.createElement('a'); element.setAttribute('href', 'data:text/plain;,' + encodeURIComponent(text)); element.setAttribute('download', filename); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); } download("hello.txt","This is the content of my file :)")这个直接创建的文件可以下载,但是 将element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); 改为服务端地址如element.setAttribute('href', 'fileurl');就不行了 四、尝试form 方法也使用过这种 $('') .appendTo('body').submit().remove();
晕! 五、尝试XMLHttpRequest方法还用过这种 function downloadIamge() { var url = ""; var xhr = new XMLHttpRequest(); xhr.open('GET', url, true);//get请求,请求地址,是否异步 xhr.responseType = "blob"; // 返回类型blob xhr.onload = function () {// 请求完成处理函数 if (this.status === 200) { var blob = this.response;// 获取返回值 var a = document.createElement('a'); a.download = 'data.doc'; a.href=window.URL.createObjectURL(blob); a.click(); } }; // 发送ajax请求 xhr.send(); }但是这个好像把事情搞大了,下个文件而已嘛,还得把XMLHttpRequest请来感觉有些大材小用了(并且这里没有使用到 后端接口,没有设置允许跨域可想而知请求是不可能成功的),还是重新再找 六、最终还是使用href + download方法解决问题最后仔细一想,等等,好像get到了,其实就是这个a他在认识的文件的情况下出现了跳转吗!所以有时候下载其他什么压缩包之类的其他类型文件都能顺利搞定 那问题就简单了 看 点此无反应javascript:void(0) 点此无反应javascript: return false; return false;最后将页面修改为 test file download by tag of a download8888哎,这么简单纠结半天,再次留下了没有技术的眼泪 |
CopyRight 2018-2019 实验室设备网 版权所有 |