導(dǎo)出文件(記錄一下)

save_as.js(@/utils/save_as)

/**
 * @description 導(dǎo)出文件
 * @param {Blob} blob 
 * @param {String} filename 
 */
export default function saveAs (blob, filename) {
  let type = blob.type;
  let force_saveable_type = 'application/octet-stream';

  if (type && type != force_saveable_type) { // 強(qiáng)制下載,而非在瀏覽器中打開
    let slice = blob.slice || blob.webkitSlice;
    blob = slice.call(blob, 0, blob.size, force_saveable_type);
  }

  let url = URL.createObjectURL(blob);
  let link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');

  link.href = url;
  link.download = filename;

  let event = document.createEvent('MouseEvents');

  event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
  link.dispatchEvent(event);
  URL.revokeObjectURL(url);

  link = null;
}

export_file.js(@/mixins/export_file)

import saveAs from '@/utils/save_as';

export default {
  methods: {
    exportFile (opts) {
      let uri = opts.uri;

      if (!uri) {
        return Promise.reject(new Error('缺少uri'));
      }

      let reqData = opts.data || {};

      return this.$http.post(uri, reqData, {
        responseType: 'blob'
      })
      .then(res => {
        let blob = res.data;

        if (blob.type == 'application/json') {

          return new Promise((_, reject) => {
            let reader = new FileReader();

            reader.onload = function (e) {
              let data = JSON.parse(e.target.result);

              reject(new Error(data.msg));
            }

            reader.readAsText(blob);
          })
        }

        let reg = /filename\="([^"]+)"/;
        let dis = res.headers['content-disposition'];

        if (!dis || !reg.test(dis)) {
          return Promise.reject(new Error('導(dǎo)出失敗'));
        }

        let filename = decodeURIComponent(RegExp.$1);

        saveAs(blob, filename);
      })
    }
  }
}

使用:
import ExportFile from '@/mixins/export_file';
mixins:[ExportFile],

let opts = {
    uri: `url`,
    data: this.searchObj
};

this.exportFile(opts)
          .catch(e => this.$message.error(e.message))
          .then(_ => this.loading = false);
聲明:所有內(nèi)容來自互聯(lián)網(wǎng)搜索結(jié)果,不保證100%準(zhǔn)確性,僅供參考。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。
發(fā)表評論
更多 網(wǎng)友評論0 條評論)
暫無評論

返回頂部

主站蜘蛛池模板: 欧美jizz18性欧美| 久久久最新精品| 俺去俺也在线www色官网| 欧美日本国产VA高清CABAL| 国内精品久久久久影视| 国产精品毛片va一区二区三区| 亚洲高清偷拍一区二区三区| a一级毛片免费高清在线| 狠狠色丁香婷婷久久综合| 在线观看国产欧美| 四虎在线免费视频| 中文字幕一精品亚洲无线一区| 老阿姨哔哩哔哩b站肉片茄子芒果| 把腿扒开做爽爽视频| 同学浓精灌麻麻| www好男人精品视频在线观看| 蜜臀AV无码精品人妻色欲| 日本一本在线播放| 又湿又紧又大又爽a视频| 一区二区三区四区精品视频| 狠狠色综合TV久久久久久| 在公车上忘穿内裤嗯啊色h文| 亚洲成a人片在线观看中文动漫| 视频二区调教中字知名国产| 晓青老师的丝袜| 国产丝袜第一页| 一本大道一卡二大卡三卡免费| 男人桶女人的肌肌30分| 国产视频一区二区在线播放| 亚洲五月激情网| 91亚洲欧美综合高清在线| 欧美亚洲精品suv| 国产在线精品国自产拍影院同性| 久久久久亚洲av综合波多野结衣| 美女无遮挡免费视频网站| 好男人手机在线| 亚洲日韩精品欧美一区二区| 国产性夜夜夜春夜夜爽| 护士撩起裙子让你桶的视频| 人妻无码一区二区三区四区| 一本一本久久a久久综合精品蜜桃 一本一本久久a久久综合精品蜜桃 |