vue 图片上传功能

Posted gluncle

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue 图片上传功能相关的知识,希望对你有一定的参考价值。

 

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

 

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

 

  1.  
    <ul class="clearfix">
  2.  
    <li v-if="imgs.length>0" v-for=‘(item ,index ) in imgs‘>
  3.  
    <img :src="item">
  4.  
    </li>
  5.  
    <li style="position:relative" v-if="imgs.length>=6 ? false : true">
  6.  
    <img src="../../assets/img/addimg.png"><input class="upload" @change=‘add_img‘ type="file">
  7.  
    </li>
  8.  
    </ul>
我这里做了图片数量的限制,最多6张。

 

然后是data数据,如下:

 

  1.  
    data () {
  2.  
    return {
  3.  
    imgs: [],
  4.  
    imgData: {
  5.  
    accept: ‘image/gif, image/jpeg, image/png, image/jpg‘,
  6.  
    }
  7.  
    }
  8.  
    }
imgs数组是放图片路径的,页面显示图片就是循环这个数组,imgData是判断图片类型的。

 

 

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

 

[html] view plain copy
 
  1. <code class="language-html">add_img(event){    
  2.             let reader =new FileReader();  
  3.             let img1=event.target.files[0];  
  4.             let type=img1.type;//文件的类型,判断是否是图片  
  5.             let size=img1.size;//文件的大小,判断图片的大小  
  6.             if(this.imgData.accept.indexOf(type) == -1){  
  7.                 alert(‘请选择我们支持的图片格式!‘);  
  8.                 return false;  
  9.             }  
  10.             if(size>3145728){  
  11.                 alert(‘请选择3M以内的图片!‘);  
  12.                 return false;  
  13.             }  
  14.             var uri = ‘‘  
  15.             let form = new FormData();   
  16.             form.append(‘file‘,img1,img1.name);  
  17.             this.$http.post(‘/file/upload‘,form,{  
  18.                 headers:{‘Content-Type‘:‘multipart/form-data‘}  
  19.             }).then(response => {  
  20.                 console.log(response.data)  
  21.                 uri = response.data.url  
  22.                 reader.readAsDataURL(img1);  
  23.                 var that=this;  
  24.                 reader.onloadend=function(){  
  25.                     that.imgs.push(uri);  
  26.                 }  
  27.             }).catch(error => {  
  28.                 alert(‘上传图片出错!‘);  
  29.             })      
  30. },</code>  



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

 

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





以上是关于vue 图片上传功能的主要内容,如果未能解决你的问题,请参考以下文章

vue点击上传图片,vue上传oss,vue-cropper图片裁剪功能

快速创建VUE移动端上传图片功能

前端功能:Vue实现图片/文件的上传与内容解析

vue 图片上传

Vue2.0 引用 exif.js 实现调用摄像头进行拍照功能以及图片上传功能

Vue+Element+Springboot实现图片上传