最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue前端實(shí)現(xiàn)下載文件功能

 更新時(shí)間:2024年10月21日 15:27:29   作者:阿波拉  
這篇文章主要介紹了vue前端實(shí)現(xiàn)下載文件功能,本文給大家介紹多種方式,感興趣的朋友跟隨小編一起看看吧

首先介紹一下我使用a標(biāo)簽方法碰到的錯(cuò)誤:

點(diǎn)擊下載后一直顯示無(wú)法下載,更換瀏覽器也不行,后來(lái)找到了錯(cuò)誤所在。

錯(cuò)誤原因就是我把路徑寫(xiě)在與我存圖片的路徑目錄下面了 src/assets/...  ,這樣是不對(duì)的,應(yīng)該把你需要下載的文件放在跟src同級(jí)的目錄下或者放在publice目錄里面,就是與你的網(wǎng)頁(yè)圖標(biāo)文件favicon.ico以及index.html  這兩個(gè)文件同級(jí)就好了,由于 public 目錄下的文件可以直接通過(guò) URL 訪問(wèn),您可以簡(jiǎn)單地指定該文件的 URL,例如:

loadFile() {
  let url = '/upload_template.csv'; // public 目錄下的文件的 URL
  let link = document.createElement('a'); // 創(chuàng)建一個(gè) <a> 元素
  link.href = url; // 設(shè)置鏈接的 href 屬性為文件的 URL
  link.download = 'upload_template.csv'; // 設(shè)置下載的文件名
  link.style.display = 'none'; // 隱藏鏈接
  document.body.appendChild(link); // 將鏈接添加到文檔中
  link.click(); // 模擬點(diǎn)擊鏈接以觸發(fā)下載
  document.body.removeChild(link); // 下載完成后移除鏈接
}

第一種:

使用<a>標(biāo)簽下載文件:你可以在Vue組件中使用<a>標(biāo)簽創(chuàng)建一個(gè)鏈接,設(shè)置href屬性為文件的URL,然后使用download屬性指定文件名。這樣點(diǎn)擊鏈接時(shí)會(huì)觸發(fā)文件下載。

代碼如下:

<a :href="fileUrl" rel="external nofollow"  download="filename">下載文件</a>
export default {
  data() {
    return {
      fileUrl: '/path/to/file.pdf',
    };
  },
};

第二種:

通過(guò)window.open()下載文件:可以通過(guò)打開(kāi)一個(gè)新窗口來(lái)實(shí)現(xiàn)文件下載。

window.open就是打開(kāi)了一個(gè)新網(wǎng)頁(yè)直接在新網(wǎng)頁(yè)訪問(wèn)文件地址了,只要訪問(wèn)文件地址,就能下載文件。這時(shí)候后端返回的是文件流直接渲染,不需要url再打開(kāi)下載了

downloadFile() {
  window.open('/path/to/file.pdf', '_blank');
},

第三種:

通過(guò)創(chuàng)建iframe下載文件:創(chuàng)建一個(gè)隱藏的iframe,并設(shè)置其src屬性為文件的URL,這樣文件將會(huì)在iframe中加載并自動(dòng)下載。

downloadFile() {
  const iframe = document.createElement('iframe');
  iframe.style.display = 'none';
  iframe.src = '/path/to/file.pdf';
  document.body.appendChild(iframe);
},

第四種:

通過(guò)向后端發(fā)送POST請(qǐng)求獲取文件流并使用Blob格式處理文件下載:在這種方法中,前端向后端發(fā)送POST請(qǐng)求,后端返回文件流,前端通過(guò)Blob對(duì)象處理并下載文件。

downloadFile() {
  axios({
    url: '/download',
    method: 'POST',
    responseType: 'blob',
    data: {
      // 可以根據(jù)需要傳遞參數(shù)
    },
  }).then((response) => {
    const url = window.URL.createObjectURL(new Blob([response.data]));
    const link = document.createElement('a');
    link.href = url;
    link.setAttribute('download', 'filename.pdf');
    document.body.appendChild(link);
    link.click();
  });
},

如果后端提供的下載接口是get類型,可以直接使用方法一和二和三,簡(jiǎn)單又便捷;當(dāng)然如果想使用方法四也是可以的,不過(guò)感覺(jué)有點(diǎn)舍近求遠(yuǎn)了。

如果后端提供的下載接口是post類型,就必須要用方法四了。

第五種:

通過(guò)Ajax請(qǐng)求下載文件:使用Vue的HTTP庫(kù)(如axios)發(fā)送GET請(qǐng)求來(lái)獲取文件數(shù)據(jù),然后使用Blob對(duì)象創(chuàng)建一個(gè)URL,并將其賦給一個(gè)隱藏的<a>標(biāo)簽,最后模擬點(diǎn)擊這個(gè)鏈接來(lái)下載文件。

import axios from 'axios';
export default {
  methods: {
    downloadFile() {
      axios({
        url: '/path/to/file.pdf',
        method: 'GET',
        responseType: 'blob',
      }).then((response) => {
        const url = window.URL.createObjectURL(new Blob([response.data]));
        const link = document.createElement('a');
        link.href = url;
        link.setAttribute('download', 'filename.pdf');
        document.body.appendChild(link);
        link.click();
      });
    },
  },
};

到此這篇關(guān)于vue前端實(shí)現(xiàn)下載文件功能的文章就介紹到這了,更多相關(guān)vue下載文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vuex處理用戶Token過(guò)期及優(yōu)化設(shè)置封裝本地存儲(chǔ)操作模塊

    Vuex處理用戶Token過(guò)期及優(yōu)化設(shè)置封裝本地存儲(chǔ)操作模塊

    這篇文章主要為大家介紹了Vuex處理用戶Token優(yōu)化設(shè)置封裝本地存儲(chǔ)操作模塊及Token?過(guò)期問(wèn)題詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • vue3+webpack中npm發(fā)布組件的實(shí)現(xiàn)

    vue3+webpack中npm發(fā)布組件的實(shí)現(xiàn)

    本文主要介紹了vue3+webpack中npm發(fā)布組件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • Vue2為何能通過(guò)this訪問(wèn)到data與methods的屬性

    Vue2為何能通過(guò)this訪問(wèn)到data與methods的屬性

    這篇文章主要介紹了Vue2為何能通過(guò)this訪問(wèn)到data與methods的屬性,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容戒殺,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • Element Tooltip 文字提示的使用示例

    Element Tooltip 文字提示的使用示例

    這篇文章主要介紹了Element Tooltip 文字提示的使用示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 關(guān)于vue的npm run dev和npm run build的區(qū)別介紹

    關(guān)于vue的npm run dev和npm run build的區(qū)別介紹

    這篇文章主要介紹了關(guān)于vue的npm run dev和npm run build的區(qū)別介紹,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • Vue二次封裝el-select實(shí)現(xiàn)下拉滾動(dòng)加載效果(el-select無(wú)限滾動(dòng))

    Vue二次封裝el-select實(shí)現(xiàn)下拉滾動(dòng)加載效果(el-select無(wú)限滾動(dòng))

    el-select默認(rèn)是不支持虛擬滾動(dòng)的,需要使用第三方插件來(lái)實(shí)現(xiàn)虛擬滾動(dòng)功能,下面這篇文章主要給大家介紹了關(guān)于Vue二次封裝el-select實(shí)現(xiàn)下拉滾動(dòng)加載效果的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • Vue獲取DOM元素并修改屬性的方法

    Vue獲取DOM元素并修改屬性的方法

    這篇文章主要介紹了Vue獲取DOM元素并修改屬性或者樣式,文中通過(guò)兩種方法給大家介紹了vue 如何獲取并操作DOM元素,需要的朋友可以參考下
    2022-10-10
  • vue通過(guò)style或者class改變樣式的實(shí)例代碼

    vue通過(guò)style或者class改變樣式的實(shí)例代碼

    這篇文章主要介紹了vue通過(guò)style或者class改變樣式的實(shí)例代碼,在文中給大家提到了vue的一些樣式(class/style)綁定,需要的朋友可以參考下
    2018-10-10
  • ejsExcel模板在Vue.js項(xiàng)目中的實(shí)際運(yùn)用

    ejsExcel模板在Vue.js項(xiàng)目中的實(shí)際運(yùn)用

    這篇文章主要介紹了ejsExcel模板在Vue.js項(xiàng)目中的實(shí)際運(yùn)用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • Vue動(dòng)態(tài)修改頁(yè)面Title(瀏覽器頁(yè)簽名稱)的三種方法

    Vue動(dòng)態(tài)修改頁(yè)面Title(瀏覽器頁(yè)簽名稱)的三種方法

    在開(kāi)發(fā) Vue 項(xiàng)目時(shí),我們經(jīng)常需要根據(jù)不同的頁(yè)面動(dòng)態(tài)修改瀏覽器的頁(yè)簽標(biāo)題(title),那么,如何在 Vue 項(xiàng)目中實(shí)現(xiàn)動(dòng)態(tài)修改 document.title 呢?本文將介紹三種實(shí)用方法,并結(jié)合代碼示例,助你輕松實(shí)現(xiàn),需要的朋友可以參考下
    2025-03-03

最新評(píng)論

涿州市| 泸西县| 岐山县| 平原县| 铜山县| 抚松县| 抚州市| 民乐县| 闽侯县| 河南省| 德江县| 广元市| 华亭县| 阳西县| 瑞丽市| 莱芜市| 宜昌市| 蒙山县| 台江县| 太和县| 大城县| 万源市| 龙井市| 阿拉尔市| 阿拉善盟| 崇信县| 弋阳县| 额尔古纳市| 武鸣县| 彭州市| 阳高县| 社旗县| 东阳市| 古丈县| 门头沟区| 茶陵县| 阿图什市| 昭苏县| 柳河县| 赣州市| 璧山县|