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知识点收藏
Feb 22 Javascript
一款JavaScript压缩工具:X2JSCompactor
Jun 13 Javascript
jquery删除提示框弹出是否删除对话框
Jan 07 Javascript
js单独获取一个checkbox看其是否被选中
Sep 22 Javascript
实现前后端数据交互方法汇总
Apr 07 Javascript
AngularJS自动表单验证
Feb 01 Javascript
jQuery Easy UI中根据第一个下拉框选中的值设置第二个下拉框是否可以编辑
Nov 29 Javascript
angularjs 获取默认选中的单选按钮的value方法
Feb 28 Javascript
vue实现element-ui对话框可拖拽功能
Aug 17 Javascript
使用taro开发微信小程序遇到的坑总结
Apr 08 Javascript
详解如何写出一个利于扩展的vue路由配置
May 16 Javascript
bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?
Jul 26 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
Yii CGridView用法实例详解
2016/07/12 PHP
PHP使用mysqli操作MySQL数据库的简单方法
2017/02/04 PHP
javascript的解析执行顺序在各个浏览器中的不同
2014/03/17 Javascript
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
深入理解javascript严格模式(Strict Mode)
2014/11/28 Javascript
jQuery+PHP打造滑动开关效果
2014/12/16 Javascript
详谈JS中实现种子随机数及作用
2016/07/19 Javascript
搭建Bootstrap离线文档的方法
2016/12/02 Javascript
JavaScript实现动态增删表格的方法
2017/03/09 Javascript
angularjs中回车键触发某一事件的方法
2017/04/24 Javascript
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
解决Vue2.x父组件与子组件之间的双向绑定问题
2018/03/06 Javascript
vue实现循环切换动画
2018/10/17 Javascript
jQuery+ajax实现批量删除功能完整示例
2019/06/06 jQuery
聊聊鉴权那些事(推荐)
2019/08/22 Javascript
OpenLayers3加载常用控件使用方法详解
2020/09/25 Javascript
[03:04]DOTA2英雄基础教程 影魔
2013/12/11 DOTA
Windows下Python的Django框架环境部署及应用编写入门
2016/03/10 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
2017/08/23 Python
Python 机器学习库 NumPy入门教程
2018/04/19 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
2018/04/23 Python
python3实现windows下同名进程监控
2018/06/21 Python
pycharm在调试python时执行其他语句的方法
2018/11/29 Python
Python FFT合成波形的实例
2019/12/04 Python
tensorflow如何继续训练之前保存的模型实例
2020/01/21 Python
Keras实现将两个模型连接到一起
2020/05/23 Python
专业实习自我鉴定
2013/10/29 职场文书
办公室经理岗位职责
2014/01/01 职场文书
设计顾问服务计划书
2014/05/04 职场文书
玩手机检讨书1000字
2014/10/20 职场文书
教师个人自我评价
2015/03/04 职场文书
面试复试通知单
2015/04/24 职场文书
和领导吃饭祝酒词
2015/08/11 职场文书
安全主题班会教案
2015/08/12 职场文书
Python中可变和不可变对象的深入讲解
2021/08/02 Python
JS 基本概念详细介绍
2021/10/16 Javascript