vue+django项目部署,django vue.js

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: