zoukankan      html  css  js  c++  java
  • Python + Vue + 七牛云上传图片

    Python + Vue + 七牛云上传图片

    申请七牛云账号、创建七牛云空间这是省略

    1、使用python获取上传使用的token值

    • 安装七牛云

      pip install qiniu==7.2.6
    • 获取token,这里是使用的工用方法,在myutils下创建qiniu_api.py文件

      from qiniu import Auth
      ​
      ​
      def qiniu_token():
          # 定义密钥
          qn = Auth('bm-V0IyKPuFLRWJengvWtXvDC8Gx5BQhCN0kIBrE', 'FYaPq_T81VDCK4-c5Ad-hRf6myQ_zuq1cywD2D4P')
          # 指定上传空间, 返回token值
          token = qn.upload_token('bucket0325')
          return token
      qiniu_api
    • 在views.py里使用qiniu_token

      from django.views import View
      from django.http import JsonResponse
      from myutils.qiniu_api import qiniu_token
      ​
      ​
      class UpTokenView(View):
      ​
          def get(self, request):
              """
              七牛云token接口
              """
              return JsonResponse({'token': qiniu_token()})
      views.py
    • 定义url

      from django.urls import path
      from . import views
      ​
      urlpatterns = [
          path('uptoken/', views.UpTokenView.as_view()),  # 获取七牛云上传凭证
      ]
      urls.py

    2、在vue里面写入的内容

    <template>
      <div>
          <input type="file" name='upFile' id="upFile" @change='changeFile($event)'>
          <input type="button" name="开始上传" value="开始上传" @click='uploadFile()'>
          <img v-if="coverUrl" :src="coverUrl" alt="封面">
          <el-progress :percentage="filePercent"></el-progress>
          {{filePercent}}
      </div>
    </template>
    <script>
    import * as qiniu from "qiniu-js";
     
    export default {
      name:'qiniu',
      data() {
        return {
          file:null,
          videoUrl:null,
          coverUrl:null,
          filePercent:0
        };
      },
      methods: {
        changeFile(e){
        //   获取文件
          this.file = e.target.files[0];
        },
          // 获取uptoken
        get_uptoken() {
              axios({
                  url: 'http://127.0.0.1:8000/day01/uptoken/',
                  method: 'get'
              }).then(res=>{
                  this.uptoken = res.data.token
              })
          },
        uploadFile() {
        // 当前VUE中的this 是指向实例,相当于父级,指向指不到子级中。所需需要一个变量 _this 存储this得指向。
          let _this = this
        // 获取身份的token
          let token = _this.uptoken
        // 上传时的配置
          var config = {
            useCdnDomain: true
          };
        //  设置文件的配置
          var putExtra = {
            fname: "",
            params: {},
            mimeType: null
          };
    ​
        //   实例化七牛云的上传实例
          var observable = qiniu.upload(_this.file, null, token, putExtra, config);
        //   设置实例的监听对象
          var observer = {
            //   接收上传进度信息
            next(res) {
                // 上传进度
                _this.filePercent = parseInt(res.total.percent) 
                if(_this.filePercent==100){
                    console.log("success")
                } 
            },
            // 接收上传错误信息
            error(err) {
              console.log(err)
            },
    ​
            // 接收上传完成后的信息
            complete(res) {
                 console.log(res.key)
            }
          };
          // 上传开始
          var subscription = observable.subscribe(observer); 
        }
        
      },
        mounted() {
        this.get_uptoken()
       }
    }
    </script>
    vue
  • 相关阅读:
    github提交代码403
    针对七牛含有特殊字符的文件名,对特殊字符编码处理
    去除字符串所有空格
    按关键词匹配度排序
    服务器监控-Zabbix
    数据同步
    字符串-占位符
    Redis序列化
    Redis监听回调
    时间计算
  • 原文地址:https://www.cnblogs.com/my-soul-my-heart/p/13950244.html
Copyright © 2011-2022 走看看