欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue如何下載本地pdf文件

 更新時間:2024年04月26日 09:54:58   作者:bangbang給你兩錘  
這篇文章主要介紹了vue如何下載本地pdf文件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

vue下載本地pdf文件

在vue中使用axios可以進行下載

axios('/public/pdf/***.pdf', {//pdf的位置
            responseType: 'blob', //重要代碼
        }).then(res => {
            const url = window.URL.createObjectURL(new Blob([res.data]));
            const link = document.createElement('a');
            link.href = url;
            let fileName = "下載的pdf.pdf" //保存到本地的文件名稱
            link.setAttribute('download', fileName);
            document.body.appendChild(link);
            link.click();
            console.log(link);
            link.remove();
        })

實際上就是創(chuàng)建了一個a標簽,調(diào)用了download 

<a href="/***.pdf" rel="external nofollow"  download="下載pdf.pdf">點擊下載</a>

放在html里面也可以下載,但是會遇到跨域問題,我是測試用的anywhere進行測試的,也可以用nginx解決跨域,JSONP,ajax,postMessage等等都可以解決跨域問題

vue PDF下載與預覽(文件流格式和base64格式)

1、pdf下載(文件流格式)

    downClick(row) {
      console.log(row, 'pppppxxx');
      downLoadZDPdf({
        custId: '91140403MA7Y5MCH34',
        qrdType: '6'
      }).then(res => {
        const link = document.createElement('a'); // 創(chuàng)建元素
        const blob = new Blob([res.data], {
          type: 'application/pdf;charset-UTF-8'
        });
        link.style.display = 'none';
        link.href = URL.createObjectURL(blob); // 創(chuàng)建下載的鏈接
        // num++
        link.setAttribute('download', row.stmtTp + '.pdf'); // 給下載后的文件命名
        document.body.appendChild(link);
        link.click(); // 點擊下載
        document.body.removeChild(link); //  下載完成移除元素
        window.URL.revokeObjectURL(link.href); // 釋放掉blob對象
      });
    },

2、pdf新開窗口預覽

 preview(row) {
      getZDDataOfYL({
        custId: '91140403MA7Y5MCH34',
        qrdType: '6'
      }).then(res => {
        console.log(res, '預覽=>>>>>>>>>>>>>');
        const blob = new Blob([res.data], { type: 'application/pdf' });
        this.pdfSrc = window.URL.createObjectURL(blob);
        window.open(this.pdfSrc);// 新窗口打開,借用瀏覽器去打印
      });
    },

3、base64格式

需將base64格式轉(zhuǎn)化下

// base64轉(zhuǎn)文件
    dataURLtoBlob(baseData) {
      var bstr = atob(baseData);
      var n = bstr.length;
      var u8arr = new Uint8Array(n);
      while (n--) {
        u8arr[n] = bstr.charCodeAt(n);
      }
      this.transData = new Blob([u8arr], { type: `application/pdf;charset-UTF-	8;application/vnd.ms-excel` });
    },
    
getPDFDataOfYL({ fileId: item.DOC }).then(res => {
        this.loading = false;
        if (res.data.data) {
          // 預覽
          if (flag !== 'DOWN') {
            this.basePdf = res?.data?.data;
            const basedata = res.data.data;
            this.pdfContent = 'data:application/pdf;base64,' + basedata;
            this.src = pdf.createLoadingTask({ url: this.pdfContent, CMapReaderFactory });
            this.src.promise.then(pdf => {
              this.numPages = pdf.numPages;
            });
          } else { // 下載
            this.dataURLtoBlob(res?.data?.data);
            var reader = new FileReader();
            reader.readAsDataURL(this.transData);

            reader.onload = function (e) {
              // 兼容IE
              if (window.navigator.msSaveOrOpenBlob) {
                var bstr = atob(e.target.result.split(',')[1]);
                var n = bstr.length;
                var u8arr = new Uint8Array(n);
                while (n--) {
                  u8arr[n] = bstr.charCodeAt(n);
                }
                var blob = new Blob([u8arr]);
                window.navigator.msSaveOrOpenBlob(blob, item.DOCNAME);
              } else {
                // 轉(zhuǎn)換完成,創(chuàng)建一個a標簽用于下載
                const a = document.createElement('a');
                a.download = item.DOCNAME; // 這里寫你的文件名
                a.href = e.target.result;
                document.body.appendChild(a);
                a.click();
                document.body.removeChild(a);
              }
            };
          }
        }
      });

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Vue3實現(xiàn)canvas畫布組件自定義畫板實例代碼

    Vue3實現(xiàn)canvas畫布組件自定義畫板實例代碼

    Vue?Canvas是一個基于Vue.js的輕量級畫板組件,旨在提供一個簡易的畫布功能,用戶可以在網(wǎng)頁上進行自由繪圖,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-09-09
  • 詳解如何理解vue的key屬性

    詳解如何理解vue的key屬性

    這篇文章主要介紹了詳解如何理解vue的key屬性,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • 在Vue中獲取組件聲明時的name屬性方法

    在Vue中獲取組件聲明時的name屬性方法

    今天小編就為大家分享一篇在Vue中獲取組件聲明時的name屬性方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 如何處理elementUI中表格多選框禁用的問題

    如何處理elementUI中表格多選框禁用的問題

    這篇文章主要介紹了如何處理elementUI中表格多選框禁用的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Vue組件之Tooltip的示例代碼

    Vue組件之Tooltip的示例代碼

    這篇文章主要介紹了Vue組件之Tooltip的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • Vite使用報錯解決方法合集

    Vite使用報錯解決方法合集

    這篇文章主要給大家介紹了關于Vite使用報錯解決方法的相關資料,這篇文中通過圖文以及代碼將遇到的一些報錯介紹的非常詳細,對大家學習或者使用vite具有一定的借鑒價值,需要的朋友可以參考下
    2023-08-08
  • 詳解VueJs前后端分離跨域問題

    詳解VueJs前后端分離跨域問題

    本篇文章主要介紹了詳解VueJs前后端分離跨域問題,詳細介紹了在項目內(nèi)設置代理(proxyTable)的方式來解決跨域問題,有興趣的可以了解一下
    2017-05-05
  • 分享7個成為更好的Vue開發(fā)者的技巧

    分享7個成為更好的Vue開發(fā)者的技巧

    作為使用Vue已經(jīng)很多年的人,特別是去年一直在使用?Vue3,因此,學到了很多東西。所以本文為大家準備了7個讓我們成為更好?Vue?開發(fā)者的技巧,需要的可以參考一下
    2022-06-06
  • 深入理解vuex2.0 之 modules

    深入理解vuex2.0 之 modules

    本篇文章主要介紹了vuex2.0 之 modules,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • 淺析vue 函數(shù)配置項watch及函數(shù) $watch 源碼分享

    淺析vue 函數(shù)配置項watch及函數(shù) $watch 源碼分享

    這篇文章主要介紹了vue 函數(shù)配置項watch及函數(shù) $watch 源碼分享 ,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11

最新評論