第一种,在html中通过a标签完成
<a href="http://test.png" download>下载</a>
第二种, 通过js创建a标签完成
import axios from 'axios'
downloadFile(url, name) {
axios({
method: 'get',
url: url,
data: {},
responseType: 'blob'
})
.then(res => {
let data = res
if (!data) {
return
}
let url = window.URL.createObjectURL(new Blob([data]))
let a = document.createElement('a')
a.style.display = 'none'
a.href = url
a.setAttribute('download', name)
document.body.appendChild(a)
a.click()
window.URL.revokeObjectURL(a.href)
document.body.removeChild(a)
})
.catch(error => {
console.log(error)
})
},
第三种
window.open("http://.............")
第四种
downloadFile(url, name) {
let a = document.createElement('a')
a.href = url
a.setAttribute('download', name)
a.click()
},
第五种
window.location.href="http://www.域名/template.xlsx(文件名)"
第六种
function(url){
try {
var elemIF = document.createElement("iframe")
elemIF.src = url
elemIF.style.display = "none"
document.body.appendChild(elemIF)
} catch (e) {
alert("下载异常!")
}
}
第七种
downloadFile(url){
var form=$("<form>");
form.attr("style","display:none");
form.attr("target","");
form.attr("method","get");
form.attr("action",url);
$("body").append(form);
form.submit();//表单提交}
}
第八种 (download.js)
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
define([], factory);
} else if (typeof exports === 'object') {
module.exports = factory();
} else {
root.download = factory();
}
}(this, function () {
return function download(data, strFileName, strMimeType) {
var self = window,
defaultMime = "application/octet-stream",
mimeType = strMimeType || defaultMime,
payload = data,
url = !strFileName && !strMimeType && payload,
anchor = document.createElement("a"),
toString = function(a){return String(a);},
myBlob = (self.Blob || self.MozBlob || self.WebKitBlob || toString),
fileName = strFileName || "download",
blob,
reader;
myBlob= myBlob.call ? myBlob.bind(self) : Blob ;
if(String(this)==="true"){
payload=[payload, mimeType];
mimeType=payload[0];
payload=payload[1];
}
if(url && url.length< 2048){
fileName = url.split("/").pop().split("?")[0];
anchor.href = url;
if(anchor.href.indexOf(url) !== -1){
var ajax=new XMLHttpRequest();
ajax.open( "GET", url, true);
ajax.responseType = 'blob';
ajax.onload= function(e){
download(e.target.response, fileName, defaultMime);
};
setTimeout(function(){ ajax.send();}, 0);
return ajax;
}
}
if(/^data:[\w+-]+/[\w+-]+[,;]/.test(payload)){
if(payload.length > (1024*1024*1.999) && myBlob !== toString ){
payload=dataUrlToBlob(payload);
mimeType=payload.type || defaultMime;
}else{
return navigator.msSaveBlob ?
navigator.msSaveBlob(dataUrlToBlob(payload), fileName) :
saver(payload) ;
}
}
blob = payload instanceof myBlob ?
payload :
new myBlob([payload], {type: mimeType}) ;
function dataUrlToBlob(strUrl) {
var parts= strUrl.split(/[:;,]/),
type= parts[1],
decoder= parts[2] == "base64" ? atob : decodeURIComponent,
binData= decoder( parts.pop() ),
mx= binData.length,
i= 0,
uiArr= new Uint8Array(mx);
for(i;i<mx;++i) uiArr[i]= binData.charCodeAt(i);
return new myBlob([uiArr], {type: type});
}
function saver(url, winMode){
if ('download' in anchor) {
anchor.href = url;
anchor.setAttribute("download", fileName);
anchor.className = "download-js-link";
anchor.innerHTML = "downloading...";
anchor.style.display = "none";
document.body.appendChild(anchor);
setTimeout(function() {
anchor.click();
document.body.removeChild(anchor);
if(winMode===true){setTimeout(function(){ self.URL.revokeObjectURL(anchor.href);}, 250 );}
}, 66);
return true;
}
if(/(Version)/(\d+).(\d+)(?:.(\d+))?.*Safari
url=url.replace(/^data:([\w/-+]+)/, defaultMime);
if(!window.open(url)){
if(confirm("Displaying New Document\n\nUse Save As... to download, then click back to return to this page.")){ location.href=url; }
}
return true;
}
var f = document.createElement("iframe");
document.body.appendChild(f);
if(!winMode){
url="data:"+url.replace(/^data:([\w/-+]+)/, defaultMime);
}
f.src=url;
setTimeout(function(){ document.body.removeChild(f); }, 333);
}
if (navigator.msSaveBlob) {
return navigator.msSaveBlob(blob, fileName);
}
if(self.URL){
saver(self.URL.createObjectURL(blob), true);
}else{
if(typeof blob === "string" || blob.constructor===toString ){
try{
return saver( "data:" + mimeType + ";base64," + self.btoa(blob) );
}catch(y){
return saver( "data:" + mimeType + "," + encodeURIComponent(blob) );
}
}
reader=new FileReader();
reader.onload=function(e){
saver(this.result);
};
reader.readAsDataURL(blob);
}
return true;
};
}))