基于vue。
// 靜態(tài)數(shù)據(jù)
const TYPE_LIMIT = {
img: 'gif/png/jpg/jpeg/bmp',
file: 'docx/doc/xls/xlsx/pdf',
all:'gif/png/jpg/jpeg/bmp/docx/doc/xls/xlsx/pdf'
}
var myDownloader = {
template: `<van-button class="btn confirm-btn" round v-on:click="download">
{{btnText}}
</van-button>`,
props: {
url: { type: String, required: true},
filename:{type: String, default: "回執(zhí)文件"},
btnText: { type: String, default: "下載"}
},
data: () => {
return {
isErrorShow: false,
errorMessage: '異常錯誤',
diaContent:''
}
},
mounted(){
let fileType = this.url.substring(this.url.lastIndexOf(".")+1).toLowerCase()
this.diaContent = !TYPE_LIMIT.img.split('/').includes(fileType)
? '即將跳轉到文件預覽,<br>請長按圖片下載揉抵。'
: '即將跳轉到文件預覽亡容,請點擊右上角“...”并點擊“默認瀏覽器打開”進行下載。'
},
methods: {
saveFile(){
location.href = this.url; // 直接下載
// load(this.url,this.filename) // 跨域重命名待用
},
download() {
var u = navigator.userAgent
//,app = navigator.appVersion;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1;
var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
// 這里調用下載
function is_weixin() {
var ua = navigator.userAgent.toLowerCase();
if (ua.match(/MicroMessenger/i) == "micromessenger") {
return true;
} else {
return false;
}
}
var isWeixin = is_weixin();
if (isWeixin && isIOS) {
this.$dialog.confirm({
title: '溫馨提示',
message: this.diaContent,
confirmButtonText :"確定"
})
.then(()=>{
this.saveFile()
})
.catch();
} else {
this.saveFile()
}
}
}
}