vue实现图片上传预览功能


Posted in Javascript onDecember 23, 2019

本文实例为大家分享了vue实现图片上传预览的具体代码,供大家参考,具体内容如下

效果图

vue实现图片上传预览功能

html结构

<ul class="gallery-window-map" style="flex-wrap:wrap;">
 <!--点击上传按钮-->
 <li class="house-pic-item" v-if="!(!item.isNew&&editBtnType[index])" @click="houseUpload(index)">
  <div class="pic-box">
   <span class="iconfont icon-zengjia"></span>
   <h5 class="btn-tit">点击上传</h5>
  </div>
 </li>
 <!--展示区域-->
 <viewer :images="item.imgUrl">
  <li class="house-pic-item" v-for="(picItem, picIndex) in item.imgUrl" :key="picIndex">
   <img :src="picItem" alt="" :key="picItem" width="120" height="90" :ref="'showImg_'+index">
   <div class="mask">
    <div class="ico-box">
     <span class="font-btn" @click="clickWatchImg('showImg_'+index,picIndex)">
      <i class="iconfont icon-fangda"></i>
     </span>
     <span class="font-btn" v-if="!(!item.isNew&&editBtnType[index])" @click="delHouseImage(index,picIndex)">
      <i class="iconfont icon-shanchu"></i>
      <i class="line"></i>
     </span>
    </div>
   </div>
  </li>
 </viewer>
</ul>

css样式

.gallery-window-map{
 display: -webkit-box;
 display: -ms-flexbox;
 display: flex;
 margin-top: 10px;
}
.house-pic-item {
 position: relative;
 display: inline-block;
 margin-right: 13px;
 width: 120px;
 height: 90px;
 background-color: #e3e3e3;
}
.pic-box {
 width: 100%;
 text-align: center;
}
.icon-zengjia {
 position: relative;
 top: 12px;
 font-size: 26px;
 color: #b2b2b2;
}
.btn-tit {
 height: 38px;
 line-height: 38px;
 font-size: 12px;
 color: #999;
}
.mask {
 display: none;
 position: absolute;
 top: 0;
 left: 0;
 right: 0;
 bottom: 0;
 background: rgba(34, 34, 34, 0.6);
}
.font-btn {
 display: inline-block;
 height: 40px;
 width: 50%;
 padding: 0 20px;
 -webkit-box-sizing: border-box;
 box-sizing: border-box;
}
.font-btn:last-child {
 position: relative;
}
.icon-fangda,
.icon-shanchu {
 font-size: 22px;
 color: #fff;
}
.line {
 content: '';
 display: inline-block;
 position: absolute;
 left: 0;
 top: 10px;
 width: 1px;
 height: 20px;
 background: #fff;
}
/** 
 * 模拟点击上传图片按钮
* @index 当前操作的户型box的索引
*/
houseUpload(index) {
 this.$refs.houseTypeLoad[index].click()
},
/** 
* 上传图片到服务器
* @index 当前操作的户型box的索引
*/
upLoadHouse(e, index) {
 let _that = this
 const file = e.target.files[0]
 if (!file) {
 return
 }
 new ImageCompressor(file, {
 quality: 0.9,
 maxWidth: 2000,
 maxHeight: 2000,
 success(result) {
 // debugger
 const formData = new FormData()
 formData.append('file', result, result.name)
 formData.append('watermark', false)
 // Send the compressed image file to server with XMLHttpRequest.
 if (result.size > 1 * 1024 * 1024 || result.size < 3 * 1024) {
 _that.$message('图片大小要在3K~1M之间')
 return
 } else {
 _that.$ajax.post('/img/upload', formData).then(res => {
 res = res.data
 if (res.images && res.images.length > 0) {
  if (res.images[0].src !== 'file size is too small') {
  let item = res.images[0].src
  console.log(item)
  _that.houseTypeForm[index].imgUrl.unshift(item)
      }
     }
 })
   }
   },
   error(e) {
   console.log(e.message)
   }
  })
  },
/** 
 * 打开图片查看器
 */
clickWatchImg(str, picIndex) {
console.log('=================')
console.log(picIndex)
console.log(this.$refs[str][picIndex])
this.$refs[str][picIndex].click()
},
 /** 
 * 删除指定图片,操作表单数据
* @index 当前操作的户型box的索引
* @picIndex 当前操作的图片索引
*/
delHouseImage(index, picIndex) {
 this.houseTypeForm[index].imgUrl.splice(picIndex, 1)
},

关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。

更多vue学习教程请阅读专题《vue实战教程》

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
如何用javascript控制上传文件的大小
Oct 26 Javascript
javascript 读取图片文件的大小
Jun 25 Javascript
JavaScript Function函数类型介绍
Apr 08 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
Apr 20 Javascript
jQuery插件ImageDrawer.js实现动态绘制图片动画(附源码下载)
Feb 25 Javascript
jQuery实现磁力图片跟随效果完整示例
Sep 16 Javascript
Bootstrap Table的使用总结
Oct 08 Javascript
微信小程序 两种为对象属性赋值的方式详解
Feb 23 Javascript
Vue 动态设置路由参数的案例分析
Apr 24 Javascript
微信小程序实现文件、图片上传功能
Aug 18 Javascript
jquery分页优化操作实例分析
Aug 23 jQuery
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
Mar 17 Javascript
vue项目实现图片上传功能
Dec 23 #Javascript
Vue移动端实现图片上传及超过1M压缩上传
Dec 23 #Javascript
vue图片上传组件使用详解
Dec 23 #Javascript
微信小程序实现签字功能
Dec 23 #Javascript
使用JS location实现搜索框历史记录功能
Dec 23 #Javascript
vue实现移动端图片上传功能
Dec 23 #Javascript
vue实现拖拽效果
Dec 23 #Javascript
You might like
浅析application/x-www-form-urlencoded和multipart/form-data的区别
2014/06/22 PHP
php实现求相对时间函数
2015/06/15 PHP
php出租房数据管理及搜索页面
2017/05/23 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
PHP7 新增常量
2021/03/09 PHP
Gambit vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
2010/06/18 Javascript
js各种验证文本框输入格式(正则表达式)
2010/10/22 Javascript
jquery中防刷IP流量软件影响统计的一点对策
2011/07/10 Javascript
使用jQuery重置(reset)表单的方法
2014/05/05 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
2014/05/29 Javascript
技术男用来对妹子表白的百度首页
2014/07/23 Javascript
解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法
2015/12/03 Javascript
JavaScript实现一个空中避难的小游戏
2017/06/06 Javascript
vue移动端下拉刷新和上拉加载的实现代码
2018/09/08 Javascript
微信小程序拍照和摄像功能实现方法示例
2019/02/01 Javascript
跟老齐学Python之关于循环的小伎俩
2014/10/02 Python
Python下的subprocess模块的入门指引
2015/04/16 Python
浅谈Python中的zip()与*zip()函数详解
2018/02/24 Python
python 获取当天每个准点时间戳的实例
2018/05/22 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
2018/10/16 Python
python实现京东订单推送到测试环境,提供便利操作示例
2019/08/09 Python
QML用PathView实现轮播图
2020/06/03 Python
python调用摄像头的示例代码
2020/09/28 Python
CSS3 倾斜的网页图片库实例教程
2009/11/14 HTML / CSS
css3强大的动画效果animate使用说明及浏览器兼容介绍
2013/01/09 HTML / CSS
Wedgwood英国官方网站:英式精致骨瓷餐具、礼品与生活精品,源于1759年
2019/09/02 全球购物
美体小铺印度官网:The Body Shop印度
2019/10/17 全球购物
成功经营餐厅的创业计划书范文
2013/12/26 职场文书
会计专业应届生自荐信
2014/02/07 职场文书
广场舞大赛策划方案
2014/05/31 职场文书
教师个人自我剖析材料
2014/09/29 职场文书
拾金不昧感谢信范文
2015/01/21 职场文书
小学运动会加油稿
2015/07/22 职场文书
redis实现共同好友的思路详解
2021/05/26 Redis
教你用Python爬取英雄联盟皮肤原画
2021/06/13 Python