使用表单时el-upload+OSS遇到的坑

情况

表单中为了直接传JSON数据,使用了上传图片时传到OSS再获取后台返回的地址保存在表单的一个操作,返回一个数据保存位置相对路径,再将这个路径保存好传给后端,后端再拼接成绝对路径传给前端渲染:http://xxxx-img.oss-cn-shenzhen.aliyuncs.com/+相对路径

问题

由于后台返回给前端保存渲染的数据是绝对路径,但后台接收的是相对路径,在编辑表格数据时如果按editForm.xxx=row.xxx的形式去赋值,如果重新上传图片则不会出现此问题,如果没有重新上传会将绝对路径传给后端,后端再拼接就得到了:http://xxxx-img.oss-cn-shenzhen.aliyuncs.com/http://xxxx-img.oss-cn-shenzhen.aliyuncs.com/+相对路径,编辑的越多次越离谱

解决方案

1.编辑信息时把row中的前缀去掉再赋值到表单

// 编辑信息
    edit(row) {
      ...
      let res = row.navigationImg.replace(
        "http://xxxx-img.oss-cn-shenzhen.aliyuncs.com/",
        ""
      );
      this.editForm.navigationImg = res;
      ...
    },

2.和后端沟通让他不要从后台拼接,传一个相对路径过去也传一个相对路径回来,然后再渲染表格内容的时候用:formatter属性拼接字符串

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用<el-upload>上传oss的步骤如下: 1. 在<el-upload>组件中设置ref属性为"upload",并设置action属性为上传接口的URL地址。同,设置multiple属性为true以支持多文件上传,设置limit属性为上传文件的数量限制。例如:<el-upload ref="upload" action="/upload" multiple :limit="3"> 2. 在methods中定义httpRequest方法,该方法用于调用服务端接口获取上传凭证。在该方法中,可以使用createUploadStsToken方法来获取上传凭证。例如:createUploadStsToken(this.folderId).then(res => { // 获取上传凭证的逻辑 }) 3. 在methods中定义handleRemove方法,该方法用于在文件上传前进行校验。可以在该方法中进行文件大小、文件类型等的校验。例如:beforeAvatarUpload(file) { // 文件上传前的校验逻辑 } 4. 在methods中定义beforeAvatarUpload方法,该方法用于在文件上传前进行校验。可以在该方法中进行文件大小、文件类型等的校验。例如:beforeAvatarUpload(file) { // 文件上传前的校验逻辑 } 5. 在data中定义fileList数组,用于存储已上传的文件列表。例如:data() { return { fileList: [] } } 6. 在<el-upload>组件中使用file-list属性绑定fileList数组,以实现文件的回显功能。例如:<el-upload :file-list="fileList"> 7. 在<el-upload>组件中添加一个按钮,用于触发文件选择对话框。例如:<el-button type="info" size="mini">点击上传</el-button> 8. 在methods中定义handleUploadSubmit方法,该方法用于提交文件上传请求。在该方法中,可以调用this.$refs['upload'].submit()来触发文件上传。例如:handleUploadSubmit() { this.$refs['upload'].submit(); } 9. 最后,需要注意的是,如果需要删除阿里云服务器上的废弃文件,可以调用client.delete方法来删除对应的文件。例如:client.delete(对应的文件名) 请注意,以上步骤仅为示例,具体实现可能会根据实际情况有所不同。同,还需要注意处理文件上传跨域问题,可以在控制台进行相关配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值