請求接口后,接口返回的要是一個文件流的數據。
請示到數據之后用blob對象進行對數據處理;
downloadFile(file) { dwonloadFiles({ fileName: file.name }).then(response => { let blob = new Blob([response]); let downloadElement = document.createElement("a"); let href = window.URL.createObjectURL(blob); //創建下載的鏈接 downloadElement.href = href; console.log(file.name, "文件名"); downloadElement.download = file.name; //下載后文件名 document.body.appendChild(downloadElement); downloadElement.click(); //點擊下載 document.body.removeChild(downloadElement); //下載完成移除元素 window.URL.revokeObjectURL(href); //釋放掉blob對象 }); },
如果直接這樣寫的的話,下載下來的文件,像word可能打開是亂碼,xlsx文件打不開,圖片顯示格式不支持,因此,需要在請求接口的時候加上此屬性:responseType: 'blob'
// 知識鏈庫下載文件 export function dwonloadFiles(query) { return request({ url: '/system/knowledgechain/download', method: 'get', params: query, responseType: 'blob' }) }