【案例】移动端上传图片功能(一)

  • 核心部分(.html)
 window.onload = function() {
     let fileTag = document.getElementById('file');
      // console.log(fileTag)
      // console.log(this.pic)
      let that = this
      
      fileTag.onchange = function() {
          let file = fileTag.files[0];
          let fileReader = new FileReader();
          // console.log(file)
          console.log(fileReader)
          // console.log(that.pic)
          fileReader.onloadend = function() {
              console.log(1212)
              if (fileReader.readyState == fileReader.DONE) {
                  // console.log(that.pic)
                  console.log(fileReader)
                  
                  if(that.pic=="") {
                      console.log(1111)
                      that.pic = fileReader.result
                      that.input1 = false
                      
                      that.upLoad(fileReader.result)
                      return
                  }else{
                      if(that.pic2=='') {
                          console.log(2222)
                          that.pic2 = fileReader.result
                          that.input2 = false
                          return
                      }else {
                          if(that.pic3=='') {
                              console.log(3333)
                              that.pic3 = fileReader.result
                              that.input3 = false
                              return
                          }else {
                              if(that.pic4=='') {
                                  console.log(4444)
                                  that.pic4 = fileReader.result
                                  that.input4 = false
                                  return
                              }else {
                                  console.log(5555)
                                  if(that.pic5=='') {
                                      that.pic5 = fileReader.result
                                      that.input5 = false
                                      return
                                  }
                                  
                              }
                          }
                      }
                      
                  }
                  // console.log(that.pic)
              }
          };
          
          fileReader.readAsDataURL(file);
      }
}    
  • vue项目代码
    主要是HTML页面设计
<div class="imgBox" @click="upImg">
   <div style="display:flex;flex-flow:wrap;">
        <div class="Img"  >
            <label>
                <img v-if="pic==''" src="./img/addPhotos.jpg">
                <img v-else width='100%' height='100%' style="border-radius:5px" id="img" :src="pic">
                <input v-if="input1" class="myInput" type="file" id="file" accept="image/*" multiple required>
            </label>
            <div v-if="pic!=''" class="myDel" @click="delImg(1)">X</div>
            
        </div>
        <div class="Img" v-if="pic!='' || !input2">
            <label>
                <img v-if="pic2==''" src="./img/addPhotos.jpg">
                <img v-else width='100%' height='100%' style="border-radius:5px" :src="pic2">
                <input v-if="input2" class="myInput" type="file" id="file" accept="image/*" multiple required>
            </label>
            <div v-if="pic2!=''" class="myDel" @click="delImg(2)">X</div>
        </div>
        <div class="Img" v-if="(pic!='' && pic2!='' ) || !input3">
            <label>
                <img v-if="pic3==''" src="./img/addPhotos.jpg">
                <img v-else width='100%' height='100%' style="border-radius:5px" :src="pic3">
                <input v-if="input3" class="myInput" type="file" id="file" accept="image/*" multiple required>
            </label>
            <div v-if="pic3!=''" class="myDel" @click="delImg(3)">X</div>
        </div>
        <div class="Img" v-if="(pic!='' && pic2!='' && pic3!='') || !input4">
            <label>
                <img v-if="pic4==''" src="./img/addPhotos.jpg">
                <img v-else width='100%' height='100%' style="border-radius:5px" :src="pic4">
                <input v-if="input4" class="myInput" type="file" id="file" accept="image/*" multiple required>
            </label>
            <div v-if="pic4!=''" class="myDel" @click="delImg(4)">X</div>
        </div>
        <div class="Img" v-if="(pic!='' && pic2!='' && pic3!='' && pic4!='') || !input5">
            <label> 
                <img v-if="pic5==''" src="./img/addPhotos.jpg">
                <img v-else width='100%' height='100%' style="border-radius:5px" :src="pic5">
                <input v-if="input5" class="myInput" type="file" id="file" accept="image/*" multiple required>
            </label>
            <div v-if="pic5!=''" class="myDel" @click="delImg(5)">X</div>
        </div>
    </div>
</div>
  • data()部分
pic:'',
pic2:'',
pic3:'',
pic4:'',
pic5:'',
input1:true,
input2:true,
input3:true,
input4:true,
input5:true,
  • methods:{}部分
upImg() {
           
  // window.onload = function() {
        let fileTag = document.getElementById('file');
        // console.log(fileTag)
        // console.log(this.pic)
        let that = this
        
        fileTag.onchange = function() {
            let file = fileTag.files[0];
            let fileReader = new FileReader();
            // console.log(file)
            console.log(fileReader)
            // console.log(that.pic)
            fileReader.onloadend = function() {
                console.log(1212)
                if (fileReader.readyState == fileReader.DONE) {
                    // console.log(that.pic)
                    console.log(fileReader)
                    
                    if(that.pic=="") {
                        console.log(1111)
                        that.pic = fileReader.result
                        that.input1 = false
                        
                        that.upLoad(fileReader.result)
                        return
                    }else{
                        if(that.pic2=='') {
                            console.log(2222)
                            that.pic2 = fileReader.result
                            that.input2 = false
                            return
                        }else {
                            if(that.pic3=='') {
                                console.log(3333)
                                that.pic3 = fileReader.result
                                that.input3 = false
                                return
                            }else {
                                if(that.pic4=='') {
                                    console.log(4444)
                                    that.pic4 = fileReader.result
                                    that.input4 = false
                                    return
                                }else {
                                    console.log(5555)
                                    if(that.pic5=='') {
                                        that.pic5 = fileReader.result
                                        that.input5 = false
                                        return
                                    }
                                }
                            }
                        }
                    }
                    // console.log(that.pic)
                }
            };
            fileReader.readAsDataURL(file);
        }
    // }    
},
delImg(num) {
    if(num==1) {
        this.pic = ''
        this.input1 = true
    }
    if(num==2) {
        this.pic2  = ''
        this.input2 = true
    }
    if(num==3) {
        this.pic3  = ''
        this.input3 = true
    }
    if(num==4) {
        this.pic4  = ''
        this.input4 = true
    }
    if(num==5) {
        this.pic5  = ''
        this.input5 = true
    }
}
  • css部分(style)
#order .imgBox {
    margin-bottom: 100px;
    padding: 20px;
    box-sizing: border-box;
    background: #fff;
    height: 250px;
}

#order .Img {
    width: 90px;
    height: 90px;
    background: #fff;
    text-align: center;
    line-height: 132px;
    box-sizing: border-box;
    border-radius: 5px;
    border: 1px solid rgba(0,0,0,.2);
    position: relative;
    margin: 0 20px 20px 0;
}

#order .myInput {
    opacity:0;
    position:absolute;
    top:0;
    top:0;
    width:90px;
    height:90px;
    left:0;
}

#order .myDel {
    color: #fff;
    position: absolute;
    right: -10px;
    top: -7px;
    width: 25px;
    height: 25px;
    border-radius: 25px;
    line-height: 25px;
    background: rgba(0,0,0,.5);
}

效果图

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值