之前介绍了一个基于jquery的uploadify插件,可以用来上传文件:Django2.0.4 + Uploadify3.0(h5版)实现多文件异步上传和删除
但毕竟这是面向过程基于节点的插件,如果前端使用vue.js的脚手架,就要入乡随俗,利用vue.js自带的VUE资源来实现异步上传视频文件
首先安装vue-resource没必要全局安装,所以只在需要用到的项目中安装即可
1
| cnpm install vue - 资源- 保存
|
然后在入口文件main.js中引入并且声明使用
在页面中写上传控件
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 上传演示:
<input type = “file” @ change = “getFile($ event)” /> <button @ click = “upload” > 上传</ button> <div> {{result}} </ div> <div v-show = “uping == 1” > 正在上传中</ div> <div v-show = 'result' >
<video ref = ' video'controls > 您的浏览器不支持视频元素。 </视频>
</ DIV>
|
在vuejs中写绑定方法和变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| data (){ return { upath :'' , result :'' , uping :0 } }, 方法:{ upload :function (){ var zipFormData = new FormData (); zipFormData 。附加('文件' ,这。UPATH ); let config = { headers : { 'Content-Type' :'multipart / form-data' } }; 这个。uping = 1 ; 这个。$ http 。post ('http:// localhost:8000 / md_admin / uploadmp4' ,zipFormData ,config )。然后(功能(响应){ 控制台。日志(响应); 控制台。日志(响应。数据); 此。 uping = 0 ; 这个。结果= 响应。数据; getFile :function (even ){ this 。upath = 事件。目标。files [ 0 ]; } }
|
最后,写一下后端上传代码:
1 2 3 4 5 6 7 8 9 10 11
| #define义上传视频方法def uploadmp4 (request ):if request 。method == 'POST' : item = {} file = request 。文件。得到('文件' ) ˚F = 开放(OS ,路径,加入(UPLOAD_ROOT ,'' ,文件,名称),'WB' )
item [ 'message' ] = '上传成功' item [ 'url' ] = 'http:// localhost:8000 / upload /' + file 。名称 item [ 'error' ] = 0 #write文件遍历文件流for chunk in file 。chunks (): f 。write (chunk )返回HttpResponse (json 。转储(item ,ensure_ascii = False ),content_type = 'application / json' )
|
完成!
Author:
Wenng
Slogan:
Do you believe in DESTINY?