Vue七牛云上传图片

623 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第8天

1、七牛云上,创建空间,配置域名

1、七牛云上,创建空间,配置域名

image.png

2、从台获取上传所用的token,例:

image.png

3、页面elementui 代码

// 七牛上传地址https://upload-z2.qiniup.com (华南)
<el-form-item label="头像:">
    <el-upload
      class="avatar-uploader"
      action="https://upload-z2.qiniup.com"
      :data="qiniuData"
      :show-file-list="false"
      :on-success="handleAvatarSuccess"
      :before-upload="beforeAvatarUpload"
      list-type="picture-card"
      :on-remove="handleRemove"
    >
      <img
        :src="formPerson.imgUrl"
        alt=""
        v-if="formPerson.imgUrl"
        class="avatar"
      />
      <img :src="formPerson.imgUrl" alt="头像" v-else />
    </el-upload>
</el-form-item>
export default {
    data(){
        return{
             qiniuData: {
                key: "", //图片名字处理
                token: "", //七牛云token
              },
     			qiniuUpAdd: "http://qiniu.scyylove.com",        
        }    
    }
}
methods(){
    //获取token
    getQiniuToken() {
      this.postRequest("/home/auth/getQiniuToken", {})
        .then((res) => {
          console.log(res, "七牛云token");
          if (res.code == 200) {
            this.qiniuData.token = res.data.qiniu_token;
          }
        })
        .catch((err) => {
          console.log(err);
        });
    },
    //图片上传之前
    beforeAvatarUpload(file) {
      // console.log(file);
      let suffix = file.name;
      let key = `upload_pic_${new Date().getTime()}_${file.name}`; // 自定义七牛云需要的key ,也就是域名后的名字,一般就是名字加时间戳,要保证名字不重复
      this.qiniuData.key = key;
      const isJPG = file.type === "image/jpeg";
      const isLt2M = file.size / 1024 / 1024 < 2;
      if (!isJPG) {
        this.$message.error("上传头像图片只能是 JPG 格式!");
      }
      if (!isLt2M) {
        this.$message.error("上传头像图片大小不能超过 2MB!");
      }
      return isJPG && isLt2M && this.qiniuData;
    },
    //上传成功之后
    handleAvatarSuccess(res, file) {
      console.log(res, file, "图片地址");
      this.formPerson.imgUrl = `${this.qiniuUpAdd}/${res.key}`; //把七牛空间上的域名,拼接到返回结果上,这就是完整的路径了,可以回传给后台
    },
    //返回结果
    //看第四条
    
}
4、上传成功之后结果返回

image.png

5、上传地址分布

image.png

6、总结

上传七牛云其实没什么难的,重点是读懂文档和注意事项,这当中有几个易错点。1.是获取token,要和后端配合好,2.上传的服务端地址要和七牛云控制台的应用匹配,不然会出错的