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 相关文章推荐
CLASS_CONFUSION JS混淆 全源码
Dec 12 Javascript
CSS JavaScript 实现菜单功能 改进版
Dec 09 Javascript
浏览器常用高宽的jquery插件
Feb 24 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
Jan 09 Javascript
js截取小数点后几位的写法
Nov 14 Javascript
谈谈JavaScript自定义回调函数
Oct 18 Javascript
jQuery中ajax错误调试分析
Dec 01 Javascript
Vue.js系列之项目结构说明(2)
Jan 03 Javascript
React Navigation 使用中遇到的问题小结
May 08 Javascript
JavaScript简单实现的仿微博留言功能示例
Jan 17 Javascript
vue增加强缓存和版本号的实现方法
May 01 Javascript
浅谈js中的attributes和Attribute的用法与区别
Jul 16 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
限制ckeditor上传图片文件大小的方法
2013/11/15 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
js 判断 enter 事件
2009/02/12 Javascript
jquery创建一个新的节点对象(自定义结构/内容)的好方法
2013/01/21 Javascript
extjs每个组件要设置唯一的ID否则会出错
2014/06/15 Javascript
JS获取时间的方法
2015/01/21 Javascript
jQuery插件pagination实现分页特效
2015/04/12 Javascript
纯JavaScript实现的分页插件实例
2015/07/14 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
BootStrap网页中代码显示用法详解
2016/10/21 Javascript
微信小程序开发之实现自定义Toast弹框
2017/06/08 Javascript
Ionic学习日记实现验证码倒计时
2018/02/08 Javascript
AngularJS 监听变量变化的实现方法
2018/10/09 Javascript
从零撸一个pc端vue的ui组件库( 计数器组件 )
2019/08/08 Javascript
Python 26进制计算实现方法
2015/05/28 Python
在Python中使用AOP实现Redis缓存示例
2017/07/11 Python
用Python一键搭建Http服务器的方法
2018/06/01 Python
Python文件读写保存操作的示例代码
2018/09/14 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
2019/05/05 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
解决django服务器重启端口被占用的问题
2019/07/26 Python
pytorch 使用加载训练好的模型做inference
2020/02/20 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
Python字符串split及rsplit方法原理详解
2020/06/29 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
2020/12/17 Python
python快速安装OpenCV的步骤记录
2021/02/22 Python
CSS中越界问题的经典解决方案【推荐】
2016/04/19 HTML / CSS
《雨霖铃》教学反思
2014/02/22 职场文书
2014村务公开实施方案
2014/02/25 职场文书
户外活动策划方案
2014/03/12 职场文书
金融专业求职信
2014/08/05 职场文书
创先争优公开承诺书
2014/08/30 职场文书
2014年党的群众路线整改措施思想汇报
2014/10/12 职场文书
2015年七一建党节演讲稿
2015/03/19 职场文书
2015年小学一年级班主任工作总结
2015/05/21 职场文书
暑假生活随笔
2015/08/15 职场文书