欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

详解vue 图片上传功能

程序员文章站 2023-12-02 23:06:28
这次做了vue页面的图片上传功能,不带裁剪功能的! 首先是html代码,在input框上添加change事件,如下:

    这次做了vue页面的图片上传功能,不带裁剪功能的!

    首先是html代码,在input框上添加change事件,如下:

    <ul class="clearfix">
            <li v-if="imgs.length>0" v-for='(item ,index ) in imgs'>
              <img :src="item">
            </li>
            <li style="position:relative" v-if="imgs.length>=6 ? false : true">
              <img src="../../assets/img/addimg.png"><input class="upload" @change='add_img' type="file">
            </li>
    </ul>
    

    我这里做了图片数量的限制,最多6张。

    然后是data数据,如下:

    data () {
      return {
        imgs: [],
        imgdata: {
          accept: 'image/gif, image/jpeg, image/png, image/jpg',
        }
      }
     }

    imgs数组是放图片路径的,页面显示图片就是循环这个数组,imgdata是判断图片类型的。

    接下来是最重要的methods里面的方法,具体如下:

    add_img(event){ 
          let reader =new filereader();
          let img1=event.target.files[0];
          let type=img1.type;//文件的类型,判断是否是图片
          let size=img1.size;//文件的大小,判断图片的大小
          if(this.imgdata.accept.indexof(type) == -1){
            alert('请选择我们支持的图片格式!');
            return false;
          }
          if(size>3145728){
            alert('请选择3m以内的图片!');
            return false;
          }
          var uri = ''
          let form = new formdata(); 
          form.append('file',img1,img1.name);
          this.$http.post('/file/upload',form,{
            headers:{'content-type':'multipart/form-data'}
          }).then(response => {
            console.log(response.data)
            uri = response.data.url
            reader.readasdataurl(img1);
            var that=this;
            reader.onloadend=function(){
              that.imgs.push(uri);
            }
          }).catch(error => {
            alert('上传图片出错!');
          })  
    },
    

    首先是获取你选择的图片,判断图片的类型和大小,然后以form表单的形式提交到后台,后台会返回给你这个图片的线上路径,你把后台返回的图片路径push到图片数组里面就可以了。

    一般情况下还有删除图片的方法,就是把图片数组里的那个路径删除掉,把数据提交到后台,告诉后台删除了哪张图片就可以了。

    以上所述是小编给大家介绍的vue 图片上传功能详解整合,希望对大家有所帮助