zoukankan      html  css  js  c++  java
  • 下载文件方法

    /**
     * 下载文件
     * @param content 响应体
     * @param fileName 文件名
     */
    export function download(content, fileName) {
      const blob = new Blob([content]) //创建一个类文件对象:Blob对象表示一个不可变的、原始数据的类文件对象
      const url = window.URL.createObjectURL(blob) //URL.createObjectURL(object)表示生成一个File对象或Blob对象
      let dom = document.createElement('a') //设置一个隐藏的a标签,href为输出流,设置download
      dom.style.display = 'none'
      dom.href = url
      dom.setAttribute('download', fileName) //指示浏览器下载url,而不是导航到它;因此将提示用户将其保存为本地文件
      document.body.appendChild(dom)
      dom.click()
    }
    

     

    ajax的回调

     // 获取文件名,保存下载内容
      const contentDisposition =
        resp.headers && resp.headers['content-disposition']
        let fileName = 'unknown'
        if (contentDisposition) {
            fileName = window.decodeURI(resp.headers['content-disposition'].split('=')[1],)
      }
       download(resp.data, fileName)            
    

      

    *******************************************************************************************'

    使用file-saver

    import {saveAs} from 'file-saver';
    
     downLoadFile(item) {
          const {url} = item;
          const getUrlFileName = url.match(/([^/]+)(.[^.]*)(?=?|$)/)[0];
          // 下载文件ajax
          const downLoadFileMethodPromise = () => {
            return new Promise((resolve, reject) => {
              const xhr = new XMLHttpRequest();
              xhr.open('get', url);
              xhr.responseType = 'blob';
              xhr.onload = function() {
                saveAs(xhr.response, getUrlFileName);
              };
              xhr.onerror = err => reject && reject(err);
              xhr.send();
            });
          };
    
          downLoadFileMethodPromise().catch(() => {
            this.$message({
              message: '下载失败!',
              type: 'error',
            });
          });
        },
    

      

  • 相关阅读:
    几种连接数据库的OLEDB驱动程序
    Javascript如何访问和处理系统文件
    如何自学Java 经典
    Android Studio 修改 包名
    Android Studio -导入项目 gradle处理
    Android Studio- 把项目提交到SVN中操作方法
    android studio 运行太慢了
    Java多线程 -sleep 用法详解
    Java -native 方法
    Java多线程 -yield用法
  • 原文地址:https://www.cnblogs.com/usebylgb/p/12981708.html
Copyright © 2011-2022 走看看