axios 送出表單同時下載下傳檔案
- vue + elementUI + axios 送出表單下載下傳檔案
// 下載下傳檔案
download(url, requestData) {
this.$axios({
method: 'post',
url: url,
data: this.$qs.stringify(requestData),
responseType: 'blob'
}).then(response => {
var data = response.data;
if (!data) {
return
}
var content_disposition = response.headers['content-disposition'];
var filename = "file";
if (content_disposition.indexOf("filename") > -1) {
filename = content_disposition.split("=")[1].trim();
filename= decodeURI(escape(filename))
}
let url = window.URL.createObjectURL(new Blob([data]))
let link = document.createElement('a')
link.style.display = 'none'
link.href = url
link.setAttribute('download', filename)
document.body.appendChild(link)
link.click()
}).catch((error) => {
this.$message.error(error.message);
});
}