vue中使用element-ui上传图片编辑回显的

博客围绕Element上传图片回显问题展开,提及项目中上传单张和多张图片的情况,包括图片回显、文件格式验证与大小检测、阻止上传操作、自定义上传函数等,还介绍了上传图片达10张时隐藏上传组件的操作及更优的computed方法解决方案。
部署运行你感兴趣的模型镜像

element上传图片回显问题

在项目中会使用到element上传图片预览问题,上传一张也许简单,但是上传多张就有一些坑了,贴上代码

// HTML
<div class="form-item-height">
   <label class="text-right">添加商品图片:</label>
   <el-upload
     action="string"  //使用自定义上传任意写一个
     list-type="picture-card"
     accept=".jpg,.jpeg,.png,.bmp" //接收上传文件类型
     :http-request="uploadImg"   //自定义上传文件函数
     :on-preview="handlePictureCardPreview"
     :on-remove="handleRemove"
     :on-change="maxUploadNum"
     :before-upload="checkUpload"
     :limit="10"
     :file-list="imgFilesList"
   >
     <i class="el-icon-plus"></i>
   </el-upload>
   <el-dialog :visible.sync="dialogVisible" size="tiny">
     <img width="100%" :src="dialogImageUrl" alt>
   </el-dialog>
 </div>

在刚开始的时候不知道图片怎么回显,看到element有个属性file-list,接收一个Array,贴上代码

//js imgFilesList 后台返回base64数据
res.data.data.file.forEach(item => {  //处理图片需要转格式
   let imageUrl = `data:image/${item.type};base64,`+ item.image;
   this.imgFilesList.push({
     "url": imageUrl,
     "name":item.name,
     "id": item.id
   })
 })

文件格式验证以及大小,检测文件return false会默认阻止后面上传操作

 //js 检查图片文件类型和大小
 checkUpload(file) {
    let fileName = file.name,regex = /(.jpg|.jpeg|.png|.bmp)$/;  //图片格式
    let isImg = regex.test(fileName.toLowerCase());
    let isLt2M = file.size / 1024 / 1024 < 2; //上传大小2m
    if (!isImg) {
        this.$message.error('请选择图片文件');
    }
    if(!isLt2M) {
      this.$message.error('上传图片的大小不能超过2M!');
    }
    return isLt2M && isImg
  },

自定义上传函数覆盖默认上传

// js 上传图片
  uploadImg(file) {
     let formData = new FormData();
     formData.append(file.filename, file.file, file.file.name)
     uploadProductImg(formData).then(res => {
       if (res.data.success) {
	//TO DO
         this.$message.success(res.data.message);
       } else {
         this.$message.error(res.data.message);
       }
     });
   },

当上传图片个数达到10张时,隐藏上传组件,显示图片list,我是直接操作DOM,后面看到了更优的解决方案 ,使用computed方法

//上传最大的图片个数
 maxUploadNum(file, fileList) {
    let imgLength = fileList.length,uploadBtn = document.getElementsByClassName('el-upload')[0]
    if(imgLength >= 10) {
      uploadBtn.style.display = "none"
    }
  },
 // 删除图片
 handleRemove(file, fileList) {
  let deleteID = null,imgLength = fileList.length,uploadBtn = document.getElementsByClassName('el-upload')[0]
   if(imgLength < 10) {
     uploadBtn.style.display = "inline-block"
   }  
 }
//删除图片调用API

效果如小图所示
在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Qwen-Image-Edit-2509

Qwen-Image-Edit-2509

图片编辑
Qwen

Qwen-Image-Edit-2509 是阿里巴巴通义千问团队于2025年9月发布的最新图像编辑AI模型,主要支持多图编辑,包括“人物+人物”、“人物+商品”等组合玩法

### 实现日期集合选择并选中的值 为了实现在 Vue2 和 Element-UI 中的日期集合选择并且已选中的值,可以采用如下方式构建组件逻辑: 定义数据模型来保存所选日期范围,并通过 `v-model` 绑定到 `<el-date-picker>` 上。对于初始化页面加载时的数据填充,则可以在创建实例或者获取远程数据之后设置该绑定变量。 ```javascript // 假设这是来自服务器端返的时间戳数组形式表示多个选定日期 let selectedDates = ['2023-10-01','2023-10-07']; export default { data() { return { dateRange: [], // 存储用户选取的日期区间 multipleSelections: [] // 如果是多选模式下存储具体每一天的信息 }; }, created(){ this.initSelectedDates(); }, methods:{ initSelectedDates(){ let tempArr = []; for(let i=0;i<selectedDates.length;i++){ const start = new Date(selectedDates[i]); tempArr.push(start); } this.dateRange=tempArr; } } } ``` 在模板部分使用 `el-date-picker` 来展示日历控件,并利用其提供的多种配置选项满足业务需求,例如指定为 range 类型用于选择连续的一段时间;如果是非连续性的单个日子组成的集合则需自定义渲染函数处理显示效果[^1]。 ```html <!-- 这里假设要实现的是一个可多选的日历 --> <div id="app"> <el-date-picker v-model="dateRange" type="dates" placeholder="Pick dates" :picker-options="{firstDayOfWeek: 1}" @change="handleDateChange"></el-date-picker> </div> ``` 针对功能,在接收到服务端响应后更新视图之前,应当先解析这些时间字符串转换成 JavaScript 的 Date 对象再赋给对应的 model 属性。这一步骤已经在上述代码片段的方法 `initSelectedDates()` 中完成。 另外需要注意一点就是关于时区差异可能导致客户端和服务端之间存在偏差的情况,因此建议统一规定好双方交互使用的标准格式(如 ISO8601),并在必要时候做相应调整[^2]。 最后提醒开发者们关注浏览器兼容性和用户体验方面的问题,确保不同设备上的表现一致性以及操作流畅度。
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值