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优化技巧(文件瘦身篇)
Jan 28 Javascript
ExtJS 2.0 实用简明教程之布局概述
Apr 29 Javascript
JQuery入门——事件切换之toggle()方法应用介绍
Feb 05 Javascript
js 有框架页面跳转(target)三种情况下的应用
Apr 09 Javascript
js获取客户端外网ip的简单实例
Nov 21 Javascript
node.js中的querystring.stringify方法使用说明
Dec 10 Javascript
angularjs学习笔记之三大模块(modal,controller,view)
Sep 26 Javascript
基于jquery实现省市联动效果
Nov 23 Javascript
前端编码规范(3)JavaScript 开发规范
Jan 21 Javascript
vue解决一个方法同时发送多个请求的问题
Sep 25 Javascript
vue cli4下环境变量和模式示例详解
Apr 09 Javascript
JavaScript find()方法及返回数据实例
Apr 30 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
四月新番又没了,《Re:从零开始的异世界生活》第二季延期至7月播出
2020/05/06 日漫
Laravel框架实现发送短信验证功能代码
2016/06/06 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
利用PHP获取汉字首字母并且分组排序详解
2017/10/22 PHP
thinkPHP5实现数据库添加内容的方法
2017/10/25 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
2019/05/01 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
2019/09/30 PHP
参考:关于Javascript中实现暂停的几篇文章
2007/03/04 Javascript
TopList标签和JavaScript结合两例
2007/08/12 Javascript
IE 条件注释详解总结(附实例代码)
2009/08/29 Javascript
js事件监听机制(事件捕获)总结
2014/08/08 Javascript
JavaScript异步加载浅析
2014/12/28 Javascript
jQuery实现网页抖动的菜单抖动效果
2015/08/07 Javascript
javascript中的正则表达式使用详解
2015/08/30 Javascript
Jquery Easyui搜索框组件SearchBox使用详解(19)
2016/12/17 Javascript
原生js实现商品放大镜效果
2017/01/12 Javascript
JavaScript实现的select点菜功能示例
2017/01/16 Javascript
nodejs学习笔记之路由
2017/03/27 NodeJs
微信小程序实现表单校验功能
2020/03/30 Javascript
js用类封装pop弹窗组件
2017/10/08 Javascript
JQuery Ajax动态加载Table数据的实例讲解
2018/08/09 jQuery
在Django的模型中执行原始SQL查询的方法
2015/07/21 Python
Python编程之event对象的用法实例分析
2017/03/23 Python
python如何在列表、字典中筛选数据
2018/03/19 Python
python 使用 requests 模块发送http请求 的方法
2018/12/09 Python
python实现局域网内实时通信代码
2019/12/22 Python
Python彻底删除文件夹及其子文件方式
2019/12/23 Python
python pandas dataframe 去重函数的具体使用
2020/07/20 Python
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
董事长助理岗位职责
2014/02/18 职场文书
护理助产毕业生的求职信
2014/03/02 职场文书
教师远程培训感言
2014/03/06 职场文书
同学聚会主持词
2014/03/18 职场文书
经营场所使用证明
2015/06/19 职场文书
祝酒词范文
2015/08/12 职场文书