Vue 使用 Element-ui upload组件实现上传文件到七牛和数据回显

文件上传

在这里插入图片描述

<el-upload
       	ref="fileUpload"
        action="https://up-z1.qiniup.com"
        :auto-upload="false"
        :data="{
            token: qnToken,
            key: fileKey
        }"
        :on-change="changeUploadFile"
        :on-success="upFileScuccess"
        :on-remove="removeFile"
        :file-list="form.fileList"
        :limit="5"
    >
        <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
</el-upload>

action:地址根据情况自行更换;
qnToken:七牛需要的token,从后台获取;
fileKey:见下文;
limit:限制文件的个数。

methods: {
		//文件状态改变
        changeUploadFile(file) {
            const suffix = file.name.split('.')
            const ext = suffix.splice(suffix.length - 1, 1)[0]
            //在文件名后面加一个时间戳,确保相同文件的key唯一
            this.fileKey = `file/${suffix.join(
                '.'
            )}_${new Date().getTime()}.${ext}`
            setTimeout(() => { 
                this.$refs['fileUpload'].submit()
            }, 500)
        },
        //文件上传成功
        upFileScuccess(response, file) {
        	//多个文件放到数组里,存的字段名为name,url,数据回显时有用!
            this.form.fileList.push({ name: file.name, url: `你的CDN地址/${response.key}` })
        },
        //文件列表移除文件
        removeFile(file, fileList) {
            let url = `你的CDN地址/${file.response.key}`
            console.log(url);
            //文件名不是唯一的,key是唯一的,所以要根据url来去重
            for (let i = 0; i < this.form.fileList.length; i++) {
                if (this.form.fileList[i].url == url) {
                    this.form.fileList.splice(i, 1)
                }
            }
        },
}

数据回显

把数据给后台的时候,如果fileList为上面的格式,那么你怎么给他的就让他怎么给你就好了,如下。
在这里插入图片描述
请求数据回来之后,直接给data中的fileList赋值,回显完成。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值