項目后端為springboot,前端為vue
后端在mysql數據庫直接存儲要下載的信息,mediumtext類型。
需求:前端列表明細行有下載按鈕,點擊按鈕時,通過Post請求拿到下載信息,並下載。
1 download({ id: row.id }).then(response => { 2 const blob = new Blob([response.data]) 3 const link = document.createElement('a') 4 if ('download' in link) { 5 link.download = row.fileName 6 link.style.display = 'none' 7 link.href = URL.createObjectURL(blob) 8 document.body.appendChild(link) 9 link.click() 10 URL.revokeObjectURL(link.href) 11 document.body.removeChild(link) 12 } else { 13 navigator.msSaveBlob(blob, row.fileName) 14 } 15 }).catch(() => {})
代碼是從網上查的,可以用。
說白了就是接收后端傳的信息(這里是字符串),先轉換成blob二進制。
創建一個a標簽,設置其href屬性為blob,設置download為下載后的文件名,點擊,再移除。
后端就是從數據庫查詢,返回要下載的信息,這里返回的是字符串。