vue 图片上传功能
Posted gluncle
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue 图片上传功能相关的知识,希望对你有一定的参考价值。
这次做了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>
然后是data数据,如下:
-
data () {
-
return {
-
imgs: [],
-
imgData: {
-
accept: ‘image/gif, image/jpeg, image/png, image/jpg‘,
-
}
-
}
-
}
接下来是最重要的methods里面的方法,具体如下:
- <code class="language-html">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(‘上传图片出错!‘);
- })
- },</code>
首先是获取你选择的图片,判断图片的类型和大小,然后以form表单的形式提交到后台,后台会返回给你这个图片的线上路径,你把后台返回的图片路径push到图片数组里面就可以了。
一般情况下还有删除图片的方法,就是把图片数组里的那个路径删除掉,把数据提交到后台,告诉后台删除了哪张图片就可以了。
以上是关于vue 图片上传功能的主要内容,如果未能解决你的问题,请参考以下文章
vue点击上传图片,vue上传oss,vue-cropper图片裁剪功能