【Vue-element-admin】vue前端处理Blob文件流,实现文件下载
2023-12-13 03:05:20
后端
class DownLoadResource(BaseView):
def post(self):
file_url=self.request.form.get('file_url')
file_name=file_url.split('/')[-1]
download_url=config.LOCAL_UPLOAD_PATH=file_name
return send_file(download_url,as_attachment=True)
前端
request.js
因为后端返回的是二进制流,也没有返回状态码,所以会被拦截,需要在request.js文件对返回的状态码进行处理
if(response.request.responseType === 'blob' || response.request.responseType === 'arraybuffer'){
return response.data
}
downloadFile.vue
<template>
<div>
<button @click="handleDownload()">下载文件</button>
</div>
</template>
<script>
import DownloadResource} from '@/api/upload-file-data'
export default{
methods:{
handleDownload(){
let format=new FormData()
formData.append('file_url','http://..../xx.pdf')
DownloadResource(formData).then(response=>{
const objectUrl=window.URL.createObjectUrl(new Blob([response],{type:"application/pdf"}))
// 创建URL
const link = document.createElement('a');
link.href=objectUrl;
//获取后台传过来的文件名
link.setAttribute('download','test');
//将链接元素添加到DOM中
document.body.appendChild(link);
//下载文件
link.click();
//清理并释放链接元素
link.parentNode.removeChild(link);
})
}
}
}
</script>
upload-file-data.js
export function DownloadResource(data){
return request({
url:''
method:'post'
reponseType:'blob',
data
})
}
文章来源:https://blog.csdn.net/weixin_43840640/article/details/134951555
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!