先使用element-ui的upload组件
<el-upload
class="upload-demo"
drag
:http-request="updateAvatar"
:show-file-list="false"
:before-upload="beforeAvatarUpload"
action=""
multiple
>
<i class="el-icon-upload" />
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
注意,这里上传的时候要用http-request自定义上传,覆盖action属性,而action属性为必填属性,不能删除,所以为空
下面写上传的函数
对象存储 快速入门-SDK 文档-文档中心-腾讯云 (tencent.com)
// 需要先 npm i cos-js-sdk-v5 --save 下载sdk并引入,创建cos实例
import COS from 'cos-js-sdk-v5'
updateAvatar(params) {
console.log(params.file)
const cos = new COS({
SecretId: '存储桶id',
SecretKey: '存储桶的key'
}) // 完成cos对象的初始化
cos.putObject({
Bucket: 'ypicture-1318050983', // 存储桶名称
Region: 'ap-nanjing', // 地域名称
Key: params.file.name, // 文件名称
StorageClass: 'STANDARD', // 固定值
Body: params.file // 文件对象
}, (err, data) => {
if (data.statusCode === 200 && data.Location) {
// 拿到了腾讯云返回的地址
// 通过input自定义事件将地址传出去
this.$emit('input', 'http://' + data.Location) // 将地址返回了
} else {
this.$message.error(err.Message) // 上传失败提示消息
}
})
},
这样就可以拿到图片的地址了