@ylz/plugins
Version:
ylz plugins
90 lines (74 loc) • 2.62 kB
JavaScript
/* * Copyright © 2019-2019 chenwenbin * Released under the MIT License. */
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
(global = global || self, global['file-download'] = factory());
}(this, function () { 'use strict';
/**
* 根据后台接口文件流下载
* @param {*} data
* @param {*} filename
* @param {*} mime
* @param {*} bom
*/
var downloadByData = function downloadByData(data, filename, mime, bom) {
var blobData = typeof bom !== 'undefined' ? [bom, data] : [data];
var blob = new Blob(blobData, {
type: mime || 'application/octet-stream'
});
if (typeof window.navigator.msSaveBlob !== 'undefined') {
window.navigator.msSaveBlob(blob, filename);
} else {
var blobURL = window.URL.createObjectURL(blob);
var tempLink = document.createElement('a');
tempLink.style.display = 'none';
tempLink.href = blobURL;
tempLink.setAttribute('download', filename);
if (typeof tempLink.download === 'undefined') {
tempLink.setAttribute('target', '_blank');
}
document.body.appendChild(tempLink);
tempLink.click();
document.body.removeChild(tempLink);
window.URL.revokeObjectURL(blobURL);
}
};
/**
* 根据文件地址下载文件
* @param {*} sUrl
*/
var downloadByUrl = function downloadByUrl(sUrl) {
var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '_self';
var isChrome = window.navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
var isSafari = window.navigator.userAgent.toLowerCase().indexOf('safari') > -1;
if (/(iP)/g.test(window.navigator.userAgent)) {
console.error('您的浏览器不支持下载!');
return false;
}
if (isChrome || isSafari) {
var link = document.createElement('a');
link.href = sUrl;
link.target = target;
if (link.download !== undefined) {
var fileName = sUrl.substring(sUrl.lastIndexOf('/') + 1, sUrl.length);
link.download = fileName;
}
if (document.createEvent) {
var e = document.createEvent('MouseEvents');
e.initEvent('click', true, true);
link.dispatchEvent(e);
return true;
}
}
if (sUrl.indexOf('?') === -1) {
sUrl += '?download';
}
window.open(sUrl, target);
return true;
};
var index = {
downloadByData: downloadByData,
downloadByUrl: downloadByUrl
};
return index;
}));