vue項目中實現文件下載功能



/*
* * 下載文件調用 * @param 接口返回數據 文件名 */
export function downloadFile(res, fileName) {
  if (!res) {
    return
  }
  if (window.navigator.msSaveBlob) {  // IE以及IE內核的瀏覽器
    try {
      window.navigator.msSaveBlob(res, fileName)  // res為接口返回數據,這里請求的時候已經處理了,如果沒處理需要在此之前自行處理var data = new Blob([res.data]) 注意這里需要是數組形式的,fileName就是下載之后的文件名
      // window.navigator.msSaveOrOpenBlob(res, fileName);  //此方法類似上面的方法,區別可自行百度
    } catch (e) {
      console.log(e)
    }
  } else {
    let url = window.URL.createObjectURL(new Blob([res]))
    let link = document.createElement('a')
    link.style.display = 'none'
    link.href = url
    link.setAttribute('download', fileName)// 文件名
    document.body.appendChild(link)
    link.click()
    document.body.removeChild(link) // 下載完成移除元素
    window.URL.revokeObjectURL(url) // 釋放掉blob對象
  }
}
 

 

 頁面調用  調用時傳入后端返回的res和文件名

下載文件的具體步驟(以谷歌瀏覽器為例)

  • 點擊下載按鈕,請求后台接口,獲取后台傳輸過來的數據data
  • axios中有個方法可以把文件流對象轉blob
  • 根據window.URL.createObjectURL方法生成一個鏈接
  • 創建一個a標簽元素
  • 設置屬性,a.download = '你的文件名字',a.href = '剛剛生成的URL'
  • 使這個標簽觸發點擊事件
  • 移除元素


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM