vue实现多张图片上传与预览

 方法1:

html:

复制代码
<div v-if='imgsback.length>0' class="flex">
    <div class="img-box" v-for="(item, i) in imgsback" :key='i' >
          <img class="img" :src="item" alt=""> <span @click="delimgback(i)"><i class="el-icon-delete"></i></span>
    </div>
</div>
<div class="img-file" v-if='imgsback.length < sizeback'>
<input type="file" id='files' @change='fileChangeback($event)'>
        <label for="files"></label>
</div>
复制代码
数据:
data(){
   return{
   imgsback: [],      // 图片预览地址
     imgfilesback: [],  // 图片原文件,上传到后台的数据
     sizeback: 1 ,      // 限制上传数量
方法methods:(每上传一张图片就调用一次接口将数据传给后台)
复制代码
      /* 图片上传 */
            fileChangeback(e) {  // 加入图片
                // 图片预览部分
                var _this = this
                var event = event || window.event;
                var file = event.target.files
                var leng=file.length;
                for(var i=0;i<leng;i++){
                    var reader = new FileReader();    // 使用 FileReader 来获取图片路径及预览效果
                    _this.imgfilesback.push(file[i])
                    reader.readAsDataURL(file[i]); 
                    reader.onload =function(e){
                    _this.imgsback.push(e.target.result);   // base 64 图片地址形成预览                                 
                    };                 
                }
                // 图片上传给后台部分
                var file = _this.imgfilesback[0];
                let form new FormData(); 
                form.append('imgFile',file);
                
                var vm = this;
                _this.$axios({
                    url: '/tryOut/upload',
                    method: 'post',
                    data: form,
                    headers: {'content-Type':'multipart/form-data'}
                }).then((re)=>{
                    console.log('re',re)
                    vm.imgurl = re.data.data.url
                    var imglist = vm.imglist;
                    imglist.push(re.data.data) 
                    vm.imglist = imglist;
                    console.log('vm.imglist',vm.imglist)
                }).catch((err)=>{
                    console.log(err)
                })
            },
//删除图片的方法

delimgback(i){
     this.imgfilesback.splice(i, 1)
     this.imgsback.splice(i, 1)
},
 
复制代码

 方法2methods(图片预览和图片数据上传是两个方法)

复制代码
 /* 图片上传--预览 */
    fileChangeback(e) {  // 加入图片
        // 图片预览部分
        var vm = this
        var event = event || window.event;
        var file = event.target.files
        var leng=file.length;
        for(var i=0;i<leng;i++){
            var reader = new FileReader();    // 使用 FileReader 来获取图片路径及预览效果
            vm.imgfilesback.push(file[i])
            reader.readAsDataURL(file[i]); 
            reader.onload =function(e){
              vm.imgsback.push(e.target.result);   // base 64 图片地址形成预览                                 
            };                 
        }
    },
    // 上传图片给后台
    updateImgToBack(){
          var url = '/zl/upload/' + this.checkedCatagoryId
          let form = new FormData(); 
          this.imgfilesback.forEach((item,index) =>{
            form.append('file',item);
          })
          var vm = this
          this.$axios.post(url,form).then(function(res){
            if(res.data.flag){
              vm.$message({
                  message: res.data.message,
                  type: 'success'
              });
              vm.updataCategoryShow = false
              vm.reload()
            }
          }).catch((err)=>{
              console.log(err)
          })
    },
复制代码

 

posted @   小那  阅读(8048)  评论(4编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示