Flask上传图片到七牛云

 后端

# 上传图片
class Upload(Resource):
    def post(self):
        # 上传到本地
        img = request.files.get("img")
        if not img:
            return jsonify({
                "code": 400,
                "msg": "图片不存在"
            })

        filename = datetime.strftime(datetime.now(), "%Y%m%d%H%M%S")
        filename += str(random.randint(100000, 999999))
        filename += "."
        filename += img.filename.split(".")[-1]

        img.save("./static/" + filename)
        # img.save(os.path.join("static", filename))
        # 上传到七牛云
        from qiniu import Auth, put_file, etag
        # 需要填写你的 Access Key 和 Secret Key
        access_key = 'g3NoW5IUNlz4S3oxqES8CgBsq5dLXcrozgp6uU6Y'
        secret_key = 'tedsy88vJSWOo3DqdpMEkpmZD7rfZTSjpxCEmvBW'
        # 构建鉴权对象
        q = Auth(access_key, secret_key)
        # 要上传的空间
        bucket_name = 'h2202afxx'
        # 上传后保存的文件名
        key = 'static/' + filename
        # 生成上传 Token,可以指定过期时间等
        token = q.upload_token(bucket_name, key, 3600)
        # 要上传文件的本地路径
        localfile = './static/' + filename
        ret, info = put_file(token, key, localfile, version='v2')
        print(info)
        if ret['key'] == key:
            return jsonify({
                "code": 200,
                "msg": "上传图片成功",
                "data": {
                    "img": key
                }
            })
        else:
            return jsonify({
                "code": 400,
                "msg": "上传图片失败"
            })

api.add_resource(Upload, "/upload")

前端

<template>
  <div>
      <el-upload
        action="http://127.0.0.1:5000/live/img"
        name="img"
        :on-success="upload"
      >
        <el-button size="small" type="primary">点击上传</el-button>
      </el-upload>
  </div>
</template>

<script>
export default {
  name: "Live",
  data() {
    return {
      img: "",
    };
  },
  props: {},

  components: {},

  created() {},

  mounted() {
    this.getData();
  },

  methods: {
    upload(resp) {
      console.log(resp);
      if (resp.code == 200) {
        alert("文件上传成功");
      }
    },
  },

  computed: {},

  watch: {},

  directives: {},

  filters: {},
};
</script>

<style scoped></style>

直接上传到七牛云

生成七牛云token

class UploadMp3(BaseView):
    def get(self):
        from qiniu import Auth
        access_key = current_app.config.get("QINIU_AK")
        secret_key = current_app.config.get("QINIU_SK")
        auth = Auth(access_key, secret_key)
        backet_name = "1103h2202a"
        token = auth.upload_token(backet_name, expires=3600)

        return self.success({
            "token": token
        })

api.add_resource(UploadMp3, "/upload/mp3")

前端

<div>
    <el-upload
      action="http://upload.qiniup.com"
      :data="{ token: upload_token }"
      :before-upload="getToken"
      :on-success="upload"
     >
       <el-button size="small" type="primary">点击上传</el-button>
   </el-upload>
</div>

data(){
  return{
    // 保存后的文件地址
    audio_file:"",
    upload_token:"",
  }
}

<script>
export default {
  methods:{
    async getToken(res) {
      console.log(res, "文件上传前");
      //async和await async声明此函数是异步函数 await声明等待函数处理完成。这两个单词必须成对出现
      //在这里我们去后端获取token,然后替换掉本地token
      await this.$axios.get("/upload/mp3").then((res) => {
        console.log(res);
        if (res.data.code == 20000) {
          this.upload_token = res.data.data.token;
        }
      });
    },
  upload(res) {
    console.log(res);
    if (res.key) {
      this.audio_file = res.key;
    }
  },
 }
};
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值