帶token驗(yàn)證的文件下載

文件的下載:

1. 最簡(jiǎn)單的就是用地址下載

window.open(url) 

url就是文件所在的地址
比如:http://....../system_files/teacher.xlsx

這樣下載會(huì)打開一個(gè)網(wǎng)頁(yè),為了不打開新網(wǎng)頁(yè),可以這樣做:

function(fileUrl){
   const url = fileUrl  
   const form = document.createElement('form') // 創(chuàng)建一個(gè)form標(biāo)簽 
   form.method = 'get' 
   form.action = url 
  document.body.appendChild(form) 
   form.submit()  
}

2.帶token的下載

我們需要用xhr給后端發(fā)送一個(gè)帶token的請(qǐng)求頭

downloadFile(filename, fileUrl, token) {
  const xhr = new XMLHttpRequest()
  const url = fileUrl
  xhr.open('get', url, true)
  xhr.setRequestHeader('Authorization', `Bearer ${token}`) // 給后端發(fā)送請(qǐng)求頭
  xhr.responseType = 'blob'
  xhr.onload = function(e) {
    if (this.status === 200) {
      const blob = this.response
      // URL對(duì)象是硬盤(SD卡等)指向文件的一個(gè)路徑,
      //如果我們做文件上傳的時(shí)候,想在沒(méi)有上傳服務(wù)器端的情況下看到上傳圖片的效果圖
      //就可是以通過(guò)var url=window.URL.createObjectURL(obj.files[0]);獲得一個(gè)http格式的url路徑
      //這個(gè)時(shí)候就可以設(shè)置到<img>中顯示了
      //window.webkitURL和window.URL是一樣的,window.URL標(biāo)準(zhǔn)定義
      //window.webkitURL是webkit內(nèi)核的實(shí)現(xiàn)(一般手機(jī)上就是使用這個(gè)),還有火狐等瀏覽器的實(shí)現(xiàn)。
      const urlObject = window.URL || window.webkitURL || window
      const export_blob = new Blob([blob])
      const a = document.createElementNS('http://www.w3.org/1999/xhtml', 'a') // 利用a標(biāo)簽特性下載
      const url = urlObject.createObjectURL(export_blob)
      a.href = url
      a.download = filename
      a.click()
    }
  }
  // 發(fā)送請(qǐng)求
  xhr.send()
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • AJAX 原生js操作ajax 1.創(chuàng)建XMLHttpRequest對(duì)象 var xhr = new XMLHtt...
    碧玉含香閱讀 3,557評(píng)論 0 7
  • Ajax和XMLHttpRequest 我們通常將Ajax等同于XMLHttpRequest,但細(xì)究起來(lái)它們兩個(gè)是...
    changxiaonan閱讀 2,383評(píng)論 0 2
  • 這應(yīng)該是你見過(guò)的最全前端下載總結(jié) 自己整理的一些項(xiàng)目中遇到過(guò)的關(guān)于上傳和下載的一些Demo,大前端系列(也就是純前...
    周小肆閱讀 1,747評(píng)論 1 12
  • 那時(shí)候山花爛漫 我們閉口不言 總以為有大把的時(shí)間
    子靑閱讀 268評(píng)論 0 5
  • 時(shí)常羨慕別人出口成章,寫文章如行云流水。效仿別人,通過(guò)大量的閱讀,增加自己的知識(shí)儲(chǔ)備量,希望能達(dá)到別人的寫作水平。...
    向日葵露閱讀 116評(píng)論 0 2

友情鏈接更多精彩內(nèi)容