vue element之axios下载文件(后端Python)
生活随笔
收集整理的這篇文章主要介紹了
vue element之axios下载文件(后端Python)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
axios 接受文件流,需要設置{responseType:'arraybuffer'}
axios.post(
apiUrl,
formdata,
{responseType:'arraybuffer'}
).then(res=> {
if (res.status === 200) {
let blob = new Blob([res.data], {
type: res.headers['content-type']
});
const fileName = res.headers['content-disposition'];
const title = fileName && (fileName.indexOf('filename=') !== -1) ? fileName.split('=')[1] : 'download';
require('script-loader!file-saver');
saveAs(blob, title);
}
}) .catch();
注: axios 中 response 表示服務器響應的數據類型,可以是 arraybuffer , blob, document , json , text , stream . 默認為: json
后端發送文件:Python
from flask import send_from_directory
@admin_bp.route('/tasksothers/download', methods=["GET", "POST"])
@auth.login_required
def api_tasksothers_download():
root_path = ''
src_name = "a.sql"
upload_path = os.path.join(root_path, src_name)
print("upload_path =", upload_path)
if os.path.isfile(upload_path):
response = send_from_directory(root_path, src_name, as_attachment=True)
print("response: ",response)
response.headers["Access-Control-Expose-Headers"] = "Content-disposition"
print("response: ", response.headers)
return response
注: 如果 response.header 中沒有添加Access-Control-Expose-Headers 這個參數(代表:服務器允許瀏覽器訪問的頭(headers)的白名單),
vue中就無法獲取 content-disposition,即 res.headers['content-disposition'];無法找到
總結
以上是生活随笔為你收集整理的vue element之axios下载文件(后端Python)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: virtualbox 采用 NAT 还是
- 下一篇: ssh整合学习(1)