七牛云vue上传大文件

注册七牛云账号

七牛云vue上传大文件

原理

七牛云vue上传大文件

1.django获取token值

 
  1. from qiniu import Auth

  2. def qiniu_token():

  3. # 需要填写你的Access Key 和 Secret Key

  4. access_key = 'gF6rL2ONmDB5GqyRtavfX9arCzR8EniQPvK-kbbe'

  5. secret_key = '9Dy-f2F8ZsiXZVPMKpuZ8ioVoRJE_ViErKnSQI_q'

  6. # 构建鉴权对象

  7. q = Auth(access_key, secret_key)

  8. # 要上传的空间

  9. backet_name = 'songqikai'

  10. # 生成上传 Token,可以指定过期时间等

  11. token = q.upload_token(backet_name, expires=3600)

  12. return token

 

 
  1. from utils.MyBaseView import qiniu_token

  2. class Qiniu(APIView):

  3. def get(self, request):

  4. token = qiniu_token()

  5. return Response({'msg':'成功', 'code':200, 'token':token})

2.vue上传文件

首先下载七牛云的JavaScript-SDK

npm install qiniu-js

下载完成JavaScript-SDK以后就可以上传图片信息了

 

 
  1. <template>

  2. <div>

  3. <input type="file" name='upFile' id="upFile" @change='changeFile($event)'>

  4. <input type="button" name="开始上传" value="开始上传" @click='uploadFile()'>

  5. <img v-if="coverUrl" :src="coverUrl" alt="封面">

  6. <el-progress :percentage="filePercent"></el-progress>

  7. {{filePercent}}

  8. </div>

  9. </template>

  10. <script>

  11. import * as qiniu from "qiniu-js";

  12.  
  13. export default {

  14. name:'qiniu',

  15. data() {

  16. return {

  17. file:null,

  18. videoUrl:null,

  19. coverUrl:null,

  20. filePercent:0

  21. };

  22. },

  23. methods: {

  24. changeFile(e){

  25. // 获取文件

  26. this.file = e.target.files[0];

  27. },

  28. uploadFile() {

  29. // 当前VUE中的this 是指向实例,相当于父级,指向指不到子级中。所需需要一个变量 _this 存储this得指向。

  30. let _this = this

  31. // 获取身份的token

  32. let token = 'gF6rL2ONmDB5GqyRtavfX9arCzR8EniQPvK-kbbe:b4W_bqnTWZih3XhHFsEjQctExaQ=:eyJzY29wZSI6InNvbmdxaWthaSIsImRlYWRsaW5lIjoxNjA0ODk0NTc2fQ=='

  33. // 上传时的配置

  34. var config = {

  35. useCdnDomain: true

  36. };

  37. // 设置文件的配置

  38. var putExtra = {

  39. fname: "",

  40. params: {},

  41. mimeType: null

  42. };

  43.  
  44. // 实例化七牛云的上传实例

  45. var observable = qiniu.upload(_this.file, null, token, putExtra, config);

  46. // 设置实例的监听对象

  47. var observer = {

  48. // 接收上传进度信息

  49. next(res) {

  50. // 上传进度

  51. _this.filePercent = parseInt(res.total.percent)

  52. if(_this.filePercent==100){

  53. console.log("success")

  54. }

  55. },

  56. // 接收上传错误信息

  57. error(err) {

  58. console.log(err)

  59. },

  60.  
  61. // 接收上传完成后的信息

  62. complete(res) {

  63. console.log(res.key)

  64. }

  65. };

  66. // 上传开始

  67. var subscription = observable.subscribe(observer);

  68. }

  69.  
  70. }

  71. };

  72. </script>