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/jquery对上传文件格式过滤的方法
Jul 25 Javascript
基于jQuery选择器的整理集合
Apr 26 Javascript
JS中attr和prop属性的区别以及优先选择示例介绍
Jun 30 Javascript
jQuery应用之jQuery链用法实例
Jan 19 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
Jun 12 Javascript
常用的js验证和数据处理总结
Aug 02 Javascript
JavaScript中校验银行卡号的实现代码
Dec 19 Javascript
原生js实现旋转木马轮播图效果
Feb 27 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
Oct 24 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
Dec 07 Javascript
jQuery实现基本动画效果的方法详解
Sep 06 jQuery
JavaScript实现图片上传并预览并提交ajax
Sep 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
用php实现百度网盘图片直链的代码分享
2012/11/01 PHP
解析PHP 使用curl提交json格式数据
2013/06/29 PHP
PHP面向对象精要总结
2014/11/07 PHP
php ajax数据传输和响应方法
2018/08/21 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
$.ajax返回的JSON无法执行success的解决方法
2011/09/09 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
2013/06/04 Javascript
JS.findElementById()使用介绍
2013/09/21 Javascript
推荐 21 款优秀的高性能 Node.js 开发框架
2014/08/18 Javascript
手机Web APP如何实现分享多平台功能
2016/08/19 Javascript
Angular ng-class详解及实例代码
2016/09/19 Javascript
微信小程序 后台https域名绑定和免费的https证书申请详解
2016/11/10 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
2017/02/07 Javascript
jquery仿ps颜色拾取功能
2017/03/08 Javascript
Angular使用操作事件指令ng-click传多个参数示例
2018/03/27 Javascript
vue动画打包后失效问题的解决方法
2018/09/18 Javascript
bootstrap table列和表头对不齐的解决方法
2019/07/19 Javascript
Vue2.0 $set()的正确使用详解
2020/07/28 Javascript
[41:52]2018DOTA2亚洲邀请赛3月29日小组赛B组Effect VS Secret
2018/03/30 DOTA
[40:31]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python文件和目录操作函数小结
2014/07/11 Python
Python中常见的数据类型小结
2015/08/29 Python
Python数据可视化正态分布简单分析及实现代码
2017/12/04 Python
Selenium 安装和简单使用的实现
2020/12/04 Python
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
FC-Moto美国:欧洲最大的摩托车服装和头盔商店之一
2019/08/24 全球购物
美国名表在线商城:Ashford(支持中文)
2019/09/24 全球购物
用JAVA实现一种排序,JAVA类实现序列化的方法(二种)
2014/04/23 面试题
支行行长竞聘报告
2014/11/06 职场文书
2015年幼儿园元旦亲子活动方案
2014/12/09 职场文书
销售员岗位职责
2015/02/10 职场文书
2015年酒店年度工作总结
2015/05/23 职场文书
小平您好观后感
2015/06/09 职场文书
2015入党自传书范文
2015/06/26 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
Python将CSV文件转化为HTML文件的操作方法
2021/06/30 Python