如何使用七牛云
最近做了一个需求,使用七牛云的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来操作。