1. 程式人生 > 其它 >後端下載Xlsx檔案 二進位制流

後端下載Xlsx檔案 二進位制流

1. 首先返回頭需要設定:options.responseType = 'blob'

其他方式和post格式相同

例子:

  postDownload (url, data, params, headers,) {
    let options = {}

    if (params) {
      options.params = params
    }
    if (headers) {
      options.headers = headers
    }
    options.responseType = 'blob'
    return axios.post(url, data, options)
  },

2. 通過介面請求後

檔名稱一般從返回header去取的

然後建立臨時的url 模擬點選效果進行下載操作

     //將二進位制流轉為blob
    const blob = new Blob([response.data], { type: 'application/octet-stream' })
    
if (typeof window.navigator.msSaveBlob !== 'undefined') { // 相容IE,window.navigator.msSaveBlob:以本地方式儲存檔案 window.navigator.msSaveBlob(blob, decodeURI(filename)) }
else { // 建立新的URL並指向File物件或者Blob物件的地址 const blobURL = window.URL.createObjectURL(blob) // 建立a標籤,用於跳轉至下載連結 const tempLink = document.createElement('a') tempLink.style.display = 'none' tempLink.href = blobURL tempLink.setAttribute(
'download', decodeURI(filename)) // 相容:某些瀏覽器不支援HTML5的download屬性 if (typeof tempLink.download === 'undefined') { tempLink.setAttribute('target', '_blank') } // 掛載a標籤 document.body.appendChild(tempLink) tempLink.click() document.body.removeChild(tempLink) // 釋放blob URL地址 window.URL.revokeObjectURL(blobURL) } }