下载文件的方法收集整理

通用文件下载方法

/**
 * 下载(表单提交)
 */ 
 downLoad (url, data, method, isNewWinOpen) {
     var config = {
         url: url,
         data: (data = data || {}),
         method: (method = method || "GET"),
         isNewWinOpen: (isNewWinOpen = isNewWinOpen || false)
     };
     var form = document.createElement('form');
     form.setAttribute('method', config.method);
     form.setAttribute('action', config.url);
     if (config.isNewWinOpen) {
         form.setAttribute('target', '_blank');
     } else {
         form.setAttribute('target', 'down-file-iframe');
     }
     for (var key in config.data) {
         var input = document.createElement('INPUT');
         input.setAttribute('type', 'hidden');
         input.setAttribute('name', key);
         input.setAttribute('value', config.data[key]);
         form.appendChild(input);
     }
     var iframe = document.createElement('iframe');
     iframe.setAttribute('name', 'down-file-iframe');
     iframe.setAttribute('style', 'display:none;');
     iframe.appendChild(form);
     document.body.appendChild(iframe);
     form.submit();
     let t = setTimeout(function () {
         window.clearTimeout(t);
         t = null;
         iframe.remove();
     }, 1000);
 }

/**
 * 下载(a标签)
 */
function downloadByURL(url, saveName) {
    if (typeof url == 'object' && url instanceof Blob) {
        url = URL.createObjectURL(url); // 创建blob地址
    }
    var aLink = document.createElement('a');
    aLink.href = url;
    aLink.download = saveName || ''; // HTML5新增的属性,指定保存文件名,可以不要后缀,注意,file:///模式下不会生效
    var event;
    if (window.MouseEvent) event = new MouseEvent('click');
    else {
        event = document.createEvent('MouseEvents');
        event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
    }
    aLink.dispatchEvent(event);
}

/**
 * fatch 得到blob对象下载
 */
fetch(urls[0]).then(response => { // 同axios
    response.blob().then(blob => {
        downloadByURL(blob,'下载2');
    })
})

/**
 * 下载excel等
 */
window.location.href=urls[0];

来源:网络

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值