如何使用七牛云


最近做了一个需求,使用七牛云的sdk来上传图片。 七牛云的文档写的可以更好一点。

html部分

<input ref='imageUrl' type="file" @click="uploadImage('imageUrl')">

这个用的是vue做的,所以会有一个ref标签,直接用原生html写的可以忽略。

//上传图片
uploadImage(ref) {
  //选中input元素
  let input = undefined;
  if(ref === 'imageUrl'){
    input = this.$refs[ref];
  }
  else{
    input = this.$refs[ref][0];
  }

  //input在onchange的时候触发
  input.onchange = ()=>{
    let _this = this;
    //localFileName 文件的本地名,一般是一个绝对地址的路径
    let localFileName = input.value;
    //文件名
    let suffix = localFileName.substring(localFileName.lastIndexOf("."),localFileName.length);//后缀名
    let fileName = localFileName.substring(localFileName.lastIndexOf("\\")+1,

    let file = input.files[0];

    //需要先获取上传七牛云的token
    axios.get(`${GET_UPLOAD_TOKEN}?fileName=${fileName}`).then((response)=>{
      if(response.code === 2000){
        //七牛云token
        const token = response.data;
        const observer = {
          next(response){
            let process = Math.floor(response.total.percent)+'%';
            if(process === '100%'){
              //这里可以写上传成功的处理逻辑
            }
          },
          error(err){
            console.log(err);
          },
          complete(res1){
            console.log(res1);
          }
        };
        const key = fileName;//上传文件名
        const putExtra = {
            fname: fileName,
            params: {},
            mimeType:["image/png", "image/jpeg", "image/gif"]
        };
        const config = {
          useCdnDomain: true,
          region: qiniu.region.z0
        };

        let observable = qiniu.upload(file, key, token, putExtra, config);
        observable.subscribe(observer) // 上传开始
      }
    })
  }
}, 

以上结束。当然了,七牛云的存储那边也需要设置一下。具体查看文档就好了。其实js部分就是七牛云提供的,html部分,我刚开始很纠结,不知道能不能用form表单的action来操作。

七牛云的文档