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 相关文章推荐
让iframe框架网页在任何浏览器下自动伸缩
Aug 18 Javascript
编辑浪子版表单验证类
May 12 Javascript
用jquery ajax获取网站Alexa排名的代码
Dec 12 Javascript
Javascript监视变量变化的方法
Jun 09 Javascript
jQuery.extend 函数及用法详细
Sep 06 Javascript
jQuery实现图片预加载效果
Nov 27 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
Apr 30 Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
Aug 11 Javascript
Vue.Js中的$watch()方法总结
Mar 23 Javascript
对VUE中的对象添加属性
Sep 18 Javascript
基于JS判断对象是否是数组
Jan 10 Javascript
js实现简单的打印表格
Jan 15 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 set_magic_quotes_runtime() 函数过时解决方法
2010/07/08 PHP
PHP连接操作access数据库实例
2015/03/30 PHP
PHP-FPM实现性能优化
2016/03/31 PHP
PHP实现的折半查询算法示例
2017/10/09 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
一直复略了的一个问题,关于表单重复提交
2007/02/15 Javascript
JavaScript 5 新增 Array 方法实现介绍
2012/02/06 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
2015/08/07 Javascript
用户代理字符串userAgent可实现的四个识别
2015/09/20 Javascript
Bootstrap中的Panel和Table全面解析
2016/06/13 Javascript
Canvas实现放射线动画效果
2017/02/15 Javascript
Vue项目实现换肤功能的一种方案分析
2019/08/28 Javascript
layui radio点击事件实现input显示和隐藏的例子
2019/09/02 Javascript
JavaScript 预解析的4种实现方法解析
2019/09/03 Javascript
es6中reduce的基本使用方法
2019/09/10 Javascript
layui使用表格渲染获取行数据的例子
2019/09/13 Javascript
js中延迟加载和预加载的具体使用
2021/01/14 Javascript
[04:54]DOTA2-DPC中国联赛1月31日Recap集锦
2021/03/11 DOTA
Python中unittest用法实例
2014/09/25 Python
Python set集合类型操作总结
2014/11/07 Python
在Python中使用sort()方法进行排序的简单教程
2015/05/21 Python
python实现统计代码行数的方法
2015/05/22 Python
Python下载网络文本数据到本地内存的四种实现方法示例
2018/02/05 Python
python去掉空白行的多种实现代码
2018/03/19 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
2019/05/05 Python
python实现电子书翻页小程序
2019/07/23 Python
突破canvas语法限制 让他支持链式语法
2012/12/24 HTML / CSS
ASICS印度官方网站:日本专业运动品牌
2020/06/20 全球购物
安全教育实施方案
2014/03/02 职场文书
集体生日活动方案
2014/08/18 职场文书
2015年思想品德教学工作总结
2015/07/22 职场文书
php微信小程序解包过程实例详解
2021/03/31 PHP
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
2021/04/01 PHP
在SQL Server中使用 Try Catch 处理异常的示例详解
2022/07/15 SQL Server