vue项目配置iview的upload插件上传文件到七牛服务器
1、ivew upload组件
<Upload
type="drag" // 支持拖拽
multiple // 支持多文件上传
:max-size="10240000" // 设置上传最大量
:action="'https://upload.qiniup.com'" // 七牛服务器地址,详见下面图片
:show-upload-list="false" // 是否显示上传列表
:data="uploadParams" // 上传参数配置
:default-file-list="[]" // 显示默认列表,之前上传的文件列表
:on-success="handleSuccess" // 上传成功回调函数
:before-upload="beforeUpload" // 上传之前回调函数,可以在这里设置上传的参数
:on-remove="removeFile" // 删除文件回调函数
:on-preview="previewFile" // 点击上传列表回调函数
:on-progress="progressFile" // 上传进度回调函数
:on-change="changeFile" // 选择文件改变回调函数
style="width: 100%;"
>
<i class="iconfont icon-add1 icon"></i>{{buttonText ? buttonText : '点击或者拖拽到此上传'}}
</Upload>
其实上传七牛有两种方法,这里直接使用表单action提交自动触发上传七牛,也可以导入七牛js通过七牛实例传参、掉接口上传。
2、获取token,上传必备,通过后台接口返回。
3、设置其他参数,通过表单里面的:data属性传递给七牛
data () {
return {
uploadParams: {}
}
}
methods: {
beforeUpload (request) {
console.log(request, 'beforeUpload')
// **注意这里的参数必须通过属性赋值,如果直接修改整个uploadParams是无效的。**
// 上传之前设置上传参数,
this.uploadParams.token = this.$store.state.upload_token
// 七牛response hash key的值自定义,后面如果需要浏览或者下载都需要这个地址,如果key不定义,那么七牛生成的key === hash的值
this.uploadParams.key = request.name
// 整个上传肯定是一个组件,所以需要将值反馈给父界面
this.$emit('completeFun', [request])
},
handleSuccess (request, file, list) {
console.log(file, list, '上传成功')
// 这里就能拿到七牛返回的response信息(hash, key)然后拼接服务器地址,就可以访问了
this.imageUrl = this.$store.getters.upload_url + request.key
console.log(request, this.$store.getters.upload_url + file.name, '获取图片地址')
this.$emit('successFun', [file, list, this.imageUrl])
},
}
遇到的问题
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。