vue实现移动端图片上传功能


Posted in Javascript onDecember 23, 2019

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

vue实现移动端图片上传功能

<template>
 <div class="box">
 <div class="upDiv">
  {{labTex}} //标题
  //上传按钮
  <input ref="uploadInput"
    type="file"
    class='upinp'
    name="file"
    value=""
    accept="image/gif,image/jpeg,image/jpg,image/png"
    @change="selectImg($event)"/>
 </div>
 //显示上传图片的区域
 <div :class="operationShow?'operation-div':'operation-div hide'">
   <img class="shoImg" :src="imgDefault">
 </div>
 </div>
</template>
<script>
export default {
 props: {
  value:{
   type:String ,
   default:''
  },
  labTex:{
   type:String ,
   default:''
  },
  imgDefault:{
   type:String ,
   default:''
  }
 },
 data() {
  return {
   dataUrl: '',
   defaultImg:''
  }
 },
 mounted() {
  console.log(this.value)
  console.log(this.labTex)
 },
 // input的change回调第一个参数是event对象
 methods: {
  selectImg(e){
   const imgFile = e.target.files[0];
   if (imgFile)
   { 
    this.operationShow=true
    if(this.checkFile(imgFile)){
     this.upload(imgFile);
    }
   }
  
  },
  checkFile(file){
   //文件为空判断
   if (file === null || file === undefined) {
    alert("请选择您要上传的文件!");
    return false;
   }else{
    return true;
   }
   let size = Math.floor(file.size / 1024);
   // 这个条件还得改
   if (size!=0) {
    return true;
   }else{
    return false
   }
  },
  upload(file){
    try {
    let self = this;
    var result='';
    //执行上传操作
    var xhr = new XMLHttpRequest();
    xhr.open("post", ApiUrl+"/member/image/upload", true);
    xhr.onreadystatechange = function () {
     if (xhr.readyState == 4) {
      if (xhr.status == 200) {
       let returnData = $.parseJSON(xhr.responseText);
       if (!returnData) throw new Error("上传失败SERVER");
       if (!returnData.code) throw new Error("上传失败SERVER")
       if (returnData.code == 200) {
        alert("上传成功")
        //显示图片地址
        self.$emit('change-img',returnData.name);
        self.defaultImg = returnData.url;
       } else {
        alert("上传失败SERVER")
       }
       console.log(""+returnDate)
      } else {
       alert("上传失败")
      }
     };
    };
    var token = getMemberToken();
    //表单数据
    var fd = new FormData();
    fd.append("token", token);
    fd.append("file", file);
    //执行发送
    result = xhr.send(fd);
   } catch (e) {
    console.log(e);
    alert(e);
   }
  }
 }
}
</script>
<style>
.box {
 height: 11rem;
 margin-top: 0.5rem;
}
.upDiv{
 position:relative;
 height:1.2rem;
 width:100%;
 margin-bottom:0.08rem;
 width:5.5rem;
 text-align: center;
 z-index:10;
 font-size: 0.6rem;
 padding: 0 0.2rem;
 border-radius: 0.2rem;
 border-radius: 0.4rem;
 color: #fff;
 border: none;
 height: 1.2rem;
 line-height: 1.2rem;
 display: inline-block;
 background: #0097ffd9;
}
.operation-div{
 width: 15rem;
 height: 9.2rem;
}
.operation-div img{
 width:100%;
 height:100%;
}
.upDiv .upinp{
 position:absolute;
 left:0px;
 right:0px;
 right:0px;
 bottom:0px;
 z-index:1;
 opacity:0;
}
.shoImg{
 width:15rem;
 border-radius:0.05rem
}
</style>

在页面当中的使用:

<upload-img 
  :lab-tex="`上传银行卡正面`"
  :img-default="imgFourDefault"
  v-on:change-img="chooseFourImg"
></upload-img>

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

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

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

Javascript 相关文章推荐
Javascript 获取字符串字节数的多种方法
Jun 02 Javascript
js 省地市级联选择
Feb 07 Javascript
jQuery之自动完成组件的深入解析
Jun 19 Javascript
从零学jquery之如何使用回调函数
May 16 Javascript
深入探密Javascript数组方法
Jan 08 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
Jan 09 Javascript
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
Sep 05 Javascript
ES6学习笔记之map、set与数组、对象的对比
Mar 01 Javascript
解决node修改后需频繁手动重启的问题
May 13 Javascript
js中Function引用类型常见有用的方法和属性详解
Dec 11 Javascript
js、jquery实现列表模糊搜索功能过程解析
Mar 27 jQuery
浅谈vant组件Picker 选择器选单选问题
Nov 04 Javascript
vue实现拖拽效果
Dec 23 #Javascript
JQuery常用选择器功能与用法实例分析
Dec 23 #jQuery
Jquery属性的获取/设置及样式添加/删除操作技巧分析
Dec 23 #jQuery
JQuery中DOM节点的操作与访问方法实例分析
Dec 23 #jQuery
JQuery中的常用事件、对象属性与使用方法分析
Dec 23 #jQuery
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
Dec 23 #Javascript
Angular如何由模板生成DOM树的方法
Dec 23 #Javascript
You might like
discuz7 phpMysql操作类
2009/06/21 PHP
实例介绍PHP的Reflection反射机制
2014/08/05 PHP
php+mysqli事务控制实现银行转账实例
2015/01/29 PHP
php实现三级级联下拉框
2016/04/17 PHP
关于PHP中协程和阻塞的一些理解与思考
2017/08/11 PHP
php中上传文件的的解决方案
2018/09/25 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
jquery $.ajax入门应用二
2008/11/19 Javascript
用户注册常用javascript代码
2009/08/29 Javascript
JavaScript异步编程Promise模式的6个特性
2014/04/03 Javascript
在JavaScript中使用NaN值的方法
2015/06/05 Javascript
6种javascript显示当前系统时间代码
2015/12/01 Javascript
JavaScript实战(原生range和自定义特效)简单实例
2016/08/21 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
2016/12/14 Javascript
浅谈DOM的操作以及性能优化问题-重绘重排
2017/01/08 Javascript
通过js修改input、select默认字体颜色
2017/04/19 Javascript
Vue实现带进度条的文件拖动上传功能
2018/02/23 Javascript
vue.js轮播图组件使用方法详解
2018/07/03 Javascript
解决vue路由后界面没有变化,但是链接有的问题
2018/09/01 Javascript
微信小程序实现动态列表项的顺序加载动画
2019/07/25 Javascript
详解在Python中处理异常的教程
2015/05/24 Python
python机器学习实战之K均值聚类
2017/12/20 Python
python中计算一个列表中连续相同的元素个数方法
2018/06/29 Python
Python爬虫常用库的安装及其环境配置
2018/09/19 Python
使用Python编写Prometheus监控的方法
2018/10/15 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
2020/06/22 Python
FILA德国官方网站:来自意大利的体育和街头服饰品牌
2019/07/19 全球购物
EJB的几种类型
2012/08/15 面试题
如何开发一个JQuery插件
2016/07/28 面试题
仓库组长岗位职责
2014/01/29 职场文书
模范教师事迹材料
2014/02/10 职场文书
表决心的诗句大全
2014/03/11 职场文书
五一劳动节活动总结
2015/02/09 职场文书
百年孤独读书笔记
2015/06/29 职场文书
CSS3 Tab动画实例之背景切换动态效果
2021/08/23 HTML / CSS
Python批量解压&压缩文件夹的示例代码
2022/04/04 Python