zoukankan      html  css  js  c++  java
  • [转]文件下载方式

    原文: https://www.cnblogs.com/boreguo/p/10282007.html

    ----------------------------------------------------------

    1、HTML5新特性

     <href="要下载文件的路径"  download="要下载文件的名称"></a>

    2、下载方法

        window.open('文件路径');

     或  window.location.href = '文件路径';

    (打开新页面造成页面一闪一闪的)

    问题:以上两种方式在批量下载时循环不可用,在循环中只执行循环的最后一次操作(当然,如果单次下载,点击速度过快也会仅下载最后一次点击的文件)。

    解决:使用iframe下载

    3、下载方法

    download(item, url) {
      const iframe = document.createElement("iframe");
      iframe.style.display = "none"; // 防止影响页面
      iframe.style.height = '0px'; // 防止影响页面
      iframe.src = url+'?downloadUrl='+item.fileUrl+'&fileName='+item.fileName;
      document.body.appendChild(iframe); // 这一行必须,iframe挂在到dom树上才会发请求
      // 5分钟之后删除(onload方法对于下载链接不起作用)
      setTimeout(()=>{
        iframe.remove();
      }, 5 * 60 * 1000);
    }
    -------------------------------------------------------------------------------------------------
    this.selectFiles.forEach(it => {
      that.download(it, url);
    })

    4、解决文件名为中文下载出现_____.doc的问题(angular中)

    download() {
    let url = `路径`;
    this.http.request('GET',url,{
    responseType: "arraybuffer"
    }).subscribe((val:any)=>{
    let blob = new Blob([val], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"});
    let objectUrl = URL.createObjectURL(blob);
    let filename = '文件名';
    let aDownload = $("<a><span class='downloadFile'></span></a>").attr("href",objectUrl).attr('download',filename);
    $("body").append(aDownload);
    $(".downloadFile").click();
    aDownload.remove();
    });
    }
  • 相关阅读:
    学习UML类图
    【转】监听器(Listener)学习
    【转】ContextLoaderListener和DispatcherServlet加载内容的区别
    个人B站+微信公众号
    如何直观形象地树状打印一棵二叉树?
    轻松手撕10大排序算法
    简单易懂的快速幂取模算法
    程序员必学:快速幂算法
    为什么Swift和Python要抛弃++--?
    JetBrains系列IDE的配色方案(IDEACLionPyCharm)
  • 原文地址:https://www.cnblogs.com/oxspirt/p/13273191.html
Copyright © 2011-2022 走看看