vue上传图片并预览

html代码:

<div id="headImg">
                        <div id="myPhoto">
                            <div class="viewPhoto" @click="monidianji">
                                <i class="el-icon-plus"></i>
                                <img :src=imageSave alt="" id="portrait" style="width: 200px;height: 200px" />
                            </div>
                            <p>提示:请选择本地图片上传,支持各种图片格式</p>
                            <div class="listBox">
                                <input type="file" id="saveImage" name="myphoto">
                            </div>
                            <div class="save">
                                <el-button type="danger" size="small" @click="imageSubmit">上传头像</el-button>
                                <div style="margin-bottom:70px;padding-top: 30px"><span>{{uploadDate}}</span></div>
                            </div>
                        </div>
                    </div>

css代码:

#headImg{
        margin-left: 50px;
        .viewPhoto{
            border: 1px rgba(99, 199, 210, 0.79) dashed;
            width: 200px;
            height: 200px;
        }
        #saveImage{
            display: none;
        }
        .save{
            margin: 30px auto;
        }
        .viewPhoto{
            position: relative;
            float: left;
            margin-right: 10%;
        }
        .el-icon-plus{
            font-size: 50px;
            color: rgba(99, 199, 210, 0.79);
            position: absolute;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
            max-width: 50%;
            text-align: center;
        }
    }

js代码:

1.双向绑定数据

  data:{
    	return{
    		 imageSave:"",//图片路径
    		 uploadDate:"",//上传时间
    	}
    }

2.模拟点击input file

//图片库模拟点击input file
         monidianji(){
                document.getElementById('saveImage').click()
         }

3.挂载预览图片

	 mounted(){
                this.yulan();//预览图片
            },
   //实时显示该图片在页面 预览
            yulan(){
                document.getElementById('saveImage').onchange = function () {
                    var imgFile = this.files[0];
                    var fr = new FileReader();
                    fr.onload = function () {
                        document.getElementById('portrait').src = fr.result;
                    };
                    fr.readAsDataURL(imgFile);
                }
            }

4.上传图片

//上传
		 imageSubmit(){
             let _this=this
             let x = document.getElementById('saveImage').files[0];
             let params = new FormData() ; //创建一个form对象
             params.append('file',x,x.name);  //append 向form表单添加数据
         //添加请求头  通过form添加的图片和文件的格式必须是multipart/form-data
              let config = {headers:{'Content-Type':'multipart/form-data'}};
              //发起ajax请求存放在服务端
              this.$axios.post(api.personHeadImg,params,config)
                    .then(function(res){
                          _this.imageSave = res.data.lujing;
                          let mydate=new Date()
                          _this.uploadDate="上传时间:"+mydate.toLocaleString()
                          _this.$notify({
                                type: 'success',
                                message: '上传成功!',
                                offset:160
                          })
                     }).catch(function (error) {
                           console.log(error);
                           _this.$notify({
                                type: 'warning',
                                message: '上传失败!',
                                offset:160
                            })
                     })
          },
  • 0
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue中实现图片上传预览的过程如下: 首先,要在Vue项目中使用图片上传功能,需要在组件中添加一个文件上传input元素,并设置其类型为"file",同时在data中定义一个变量来保存上传的文件对象和预览图片URL。例如: ``` <input type="file" @change="handleImageUpload"> <img :src="previewImage" v-if="previewImage"> ``` 其次,在methods中,需要定义一个处理图片上传的函数。在函数中,首先获取用户选择的文件,并将其赋值给data中的变量。然后利用FileReader将文件转换成Data URL的形式,以便在浏览器端预览。最后,将转换后的URL保存在data中的变量中,以便在页面上进行预览。例如: ``` handleImageUpload(event) { const file = event.target.files[0]; this.image = file; const reader = new FileReader(); reader.onload = () => { this.previewImage = reader.result; } reader.readAsDataURL(file); } ``` 接下来,在data中定义一个用于保存预览图片的变量previewImage,并将其初值设置为null。这个变量会在上传文件并预览时使用。例如: ``` data() { return { image: null, previewImage: null } } ``` 最后,将上传的文件和预览图片URL绑定到页面上,以实现图片上传预览的功能。例如,在input元素中使用@change监听文件选择事件,然后调用handleImageUpload方法进行文件上传和预览。在img元素中使用v-if指令判断预览图片的URL是否存在,如果存在,则显示预览图片。例如: ``` <input type="file" @change="handleImageUpload"> <img :src="previewImage" v-if="previewImage"> ``` 以上就是使用Vue实现图片上传预览的简单过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值