vue+django项目部署,django vue.js
这篇文章主要介绍了vue django实现下载文件的示例,帮助大家更好的理解和学习使用某视频剪辑软件框架,感兴趣的朋友可以了解下
目录
一、概述二、姜戈项目三、vue项目
一、概述
在项目中,点击下载按钮,就可以下载文件。
传统的下载链接一般是得到方式,这种链接是公开的,可以任意下载。
在实际项目,某些下载链接,是私密的。必须使用邮政方式,传递正确的参数,才能下载。
二、django项目
本环境使用姜戈3.1.5,新建项目下载_演示
安装模块
pip3安装姜戈-CORS-标题
修改文件下载_演示/设置。巴拉圭
INSTALLED_APPS=[
django.contrib.admin ,
django.contrib.auth ,
django.contrib.contenttypes ,
django.contrib.sessions ,
django.contrib.messages ,
django.contrib.staticfiles ,
api.apps.ApiConfig ,
科尔海德斯,#注册应用克-奥二氏分级量表
]
注册中间件
中间件=[
姜戈。中间件。安全。安全中间件,
姜戈。贡献。会话。中间件。会话中间件,
姜戈。中间件。常见。通用中间件,
姜戈。中间件。csrf。 csrfviewmiddleware ,
姜戈。贡献。auth。中间件。认证中间件,
姜戈。贡献。消息。中间件。消息中间件,
姜戈。中间件。点击顶举。xframeoptions中间件,
CORS头球。中间件。CORS中间件,#注册组件克-奥二氏分级量表
]
最后一行增加
# 跨域增加忽略
CORS _允许_凭证=真
CORS _起源_允许_全部=真
CORS _允许_方法=(
获取,
选项,
补丁,
发布,
视图,
)
CORS _允许_标题=(
XMLHttpRequest ,
x _文件名,
接受编码,
授权,
内容类型,
dnt ,
来源,
用户代理,
x-csrftoken ,
x-请求-使用,
杂注,
)
修改下载_演示/URL。巴拉圭
来自姜戈. contrib导入管理
从django.urls导入路径
从美国石油学会(American Petroleum Institute)导入视图
urlpatterns=[
路径( admin/,admin.site.urls),
路径(下载/excel/),视图ExcelFileDownload.as_view()),
]
修改api/views.py
从django .捷径导入呈现,HttpResponse
从下载_演示导入设置
从django.utils .编码导入转义_uri_path
从django.http导入StreamingHttpResponse
从django.http导入JsonResponse
从rest _框架.视图导入APIView
从rest _框架导入状态
导入操作系统
类ExcelFileDownload(APIView):
定义发布(自己,请求):
打印(请求。数据)
# filename=大江大河 xlsx
filename=request.data.get(文件名)
下载_文件_路径=os.path.join(设置。基本目录,上传,文件名)
打印(下载文件路径,下载文件路径)
回应=自我。大_文件_下载(下载文件路径,文件名)
如果响应:
返回响应
返回JSON响应({ status : HttpResponse , msg: Excel下载失败})
def file_iterator(self,file_path,chunk_size=512):
文件生成器,防止文件过大,导致内存溢出
:参数文件路径:文件绝对路径
:参数区块大小:块大小
:返回:生成器
用open(文件路径,模式=rb )作为女:
虽然正确:
c=f.read(块大小)
如果丙:
产量c
否则:
破裂
def大_文件_下载(自身,下载文件路径,文件名):
尝试:
response=StreamingHttpResponse(self。文件迭代器(下载文件路径))
# 增加头球
响应[内容类型]=应用程序/八位字节流
response[ Access-Control-Expose-Headers ]= Content-Disposition,Content-Type
响应[内容处置]=附件;filename={} .格式(转义上呼吸道感染路径(文件名))
返回响应
例外情况除外:
返回JsonResponse({status: status .HTTP_400_BAD_REQUEST, msg: Excel下载失败},
地位=地位HTTP _ 400 _错误请求)
在项目根目录创建上传文件
里面放一个超过文件,比如:大江大河。文件格式
三、vue项目
新建一个某视频剪辑软件项目,安装ElementUI模块即可。
新建测试。某视频剪辑软件
模板
div style= width:70%;左边距:30px上边距:30px
El-button class= filter-item type= success icon= El-icon-download @ click= downFile()下载/el-button
/div
/模板
脚本
从" axios "导入爱可信
导出默认值{
data() {
返回{
}
},
已安装:函数(){
},
方法:{
下载文件(url,options={}){
返回新承诺((解决,拒绝)={
//console.log(`${url}请求数据,参数=`,JSON.stringify(选项))
//axios。默认值。headers[ content-type ]= application/JSON;charset=UTF-8
axios({
方法: post ,
url: url,//请求地址
数据:选项,//参数
responseType: blob //表明返回服务器返回的数据类型
}).然后(
响应={
//console.log(下载响应,响应)
解析(响应.数据)
设blob=新Blob([response.data],{
类型:"应用程序/vnd.ms-excel "
})
//console.log(blob)
//让文件名=日期。parse(new Date()) .xlsx
//切割出文件名
让文件名编码=响应。标题[内容处置].split( filename=)[1];
//解码
假设fileName=decodeURIComponent(文件名编码)
//console.log(fileName ,fileName)
如果(窗口。领航员。mssaveoropenblob){
//console.log(2)
领航员。mssavelob(blob,文件名)
}否则{
//console.log(3)
var link=文档。createelement( a )
link.href=window .URL.createObjectURL(blob)
link.download=文件名
link.click()
//释放内存
窗户URL.revokeObjectURL(link.href)
}
},
错误={
拒绝(错误)
}
)
})
},
//下载文件
向下文件(){
让我们保持姿势。0 .0 .1:8000/下载/excel/
让params={
文件名: 大江大河 xlsx ,
}
//console.log(下载参数,参数)
this.downloadFile(postUrl,params)
},
}
}
/脚本
风格
/风格
注意:这里使用邮政请求,并将文件名传输给api,用来下载指定的文件。
访问测试页面,点击下载按钮
就会自动下载
打开工具栏,查看响应信息
这里,就是框架返回的文件名,浏览器下载保存的文件名,也是这个。
遇到中文,会进行什么编码。
所以在某视频剪辑软件代码中,对内容-处置做了切割,得到了文件名。
以上就是vue django实现下载文件的示例的详细内容,更多关于vue django实现下载文件的资料请关注我们其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。