目的:elementui 上传多张图片到七牛云上面去
第一步:效果说明
七牛云显示:
第二步:代码
2-1、这里会用到两个小东西,一个是 后台获取 token,一个是获取一个随机不重复字符串(uuid用来做上传文件的名称)
token 获取:http://www.xdx97.com/#/single?bid=c82a7a0e-4cfe-a0d4-419a-47c22a05b84d
前台获取uuid代码:因为这里用不到了vue 所以前面有个前缀(放在 main.js 里面),你也可以用自己的生成方法
//用于生成uuid
Vue.prototype.S4 = function(){
return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
}
Vue.prototype.guid = function() {
return (this.S4()+this.S4()+"-"+this.S4()+"-"+this.S4()+"-"+this.S4()+"-"+this.S4()+this.S4()+this.S4());
}
2-2html代码
<el-upload
:action="uploadQiniuUrl"
ref="upload"
list-type="picture-card"
:auto-upload=false
:data="qiniuData"
:before-upload="beforeUploadGetKey"
:on-preview="handlePictureCardPreview"
>
<i class="el-icon-plus"></i>
</el-upload>
<el-dialog :visible.sync="dialogVisible">
<img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>
2-3 变量定义 vue 直接放在 data(){ return { } }
说明一下这个 url :https://developer.qiniu.com/kodo/manual/1671/region-endpoint
dialogImageUrl: '', //选中的某张图片的 url
dialogVisible: false, //图片原图展示框
uploadQiniuUrl:"https://upload.qiniup.com", //七牛云服务器地址
qiniuData:{ //上传图片携带的参数
token : "",
key : "",
},
2-4:各种方法 (直接放在 methods: 里面)
methods:{
getToken(){ //上传之前获取 token
var url1 = this.$store.state.frontUrl + "/getQiniuToken?bucket=xdx97-album";
this.$ajax.get(url1)
.then( response => {
//获取 token
this.qiniuData.token = response.data.token;
})
},
submitUpload() { //提交上传
this.$refs.upload.submit();
},
beforeUploadGetKey() { //每个文件上传之前 给它一个 名字
this.qiniuData.key = this.guid();
},
handlePictureCardPreview(file) { //查看某张图片的原图
this.dialogImageUrl = file.url;
this.dialogVisible = true;
},
}
2-5:初始化方法
created(){
this.getToken(); //获取token
},
2-6:上传按钮
<el-button type="primary" class="buttonupload" @click="submitUpload">上传图片</el-button>
第三步:解释说明 (不想看的可以略过)
1、 :before-upload="beforeUploadGetKey" : 每次上传文件(多个文件同时上传也是每个上传之前都会调用这个方法。所以在这里可以做一些上传之前的准备工作,比如 给文件命名)
2、 :on-preview="handlePictureCardPreview" : 这个其实个上传文件没有什么关系,这是只是当你把鼠标放在要上传的文件上,上面会显示一个放大的按钮,这个主要是 放大显示图片的
3、 :auto-upload=false :这个表示不是立即上传