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 相关文章推荐
jquery关于图形报表的运用实现代码
Jan 06 Javascript
jquery快捷动态绑定键盘事件的操作函数代码
Oct 17 Javascript
用js读写cookie的简单方法(推荐)
Aug 08 Javascript
Angular 表单控件示例代码
Jun 26 Javascript
基于jquery实现多级菜单效果
Jul 25 jQuery
Vue前端开发规范整理(推荐)
Apr 23 Javascript
vue弹窗组件使用方法
Apr 28 Javascript
vue router 配置路由的方法
Jul 26 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
Jul 22 Javascript
Vue父组件监听子组件生命周期
Sep 03 Javascript
vscode自定义vue模板的实现
Jan 27 Vue.js
vue实现书本翻页动画效果实例详解
Apr 08 Vue.js
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应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
php读取excel文件示例分享(更新修改excel)
2014/02/27 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
2014/10/30 PHP
php准确获取文件MIME类型的方法
2015/06/17 PHP
php cli模式下获取参数的方法
2017/05/05 PHP
在Laravel的Model层做数据缓存的实现
2019/09/26 PHP
利用XMLHTTP传递参数在另一页面执行并刷新本页
2006/10/26 Javascript
刷新页面实现方式总结(HTML,ASP,JS)
2008/11/13 Javascript
JQuery EasyUI 日期控件如何控制日期选择区间
2014/05/05 Javascript
Nodejs进阶:基于express+multer的文件上传实例
2016/11/21 NodeJs
JQuery统计input和textarea文字输入数量(代码分享)
2016/12/29 Javascript
微信小程序官方动态自定义底部tabBar的例子
2019/09/04 Javascript
Vue设置长时间未操作登录自动到期返回登录页
2020/01/22 Javascript
React倒计时功能实现代码——解耦通用
2020/09/18 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
[46:42]DOTA2-DPC中国联赛正赛 Aster vs Magma BO3 第二场 3月5日
2021/03/11 DOTA
python实现电子词典
2020/04/23 Python
Python求解平方根的方法
2015/03/11 Python
python+pillow绘制矩阵盖尔圆简单实例
2018/01/16 Python
Python冲顶大会 快来答题!
2018/01/17 Python
Python实现动态图解析、合成与倒放
2018/01/18 Python
python 从csv读数据到mysql的实例
2018/06/21 Python
Django如何开发简单的查询接口详解
2019/05/17 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
django 多数据库及分库实现方式
2020/04/01 Python
周仰杰(JIMMY CHOO)英国官方网站:闻名世界的鞋子品牌
2018/10/28 全球购物
在线课程:Skillshare
2019/04/02 全球购物
Groupon荷兰官方网站:高达70%的折扣
2019/11/01 全球购物
个人收入证明范本
2014/01/12 职场文书
葬礼司仪主持词
2014/03/31 职场文书
中国梦读书活动总结
2014/07/10 职场文书
离婚协议书怎样才有法律效力
2014/10/10 职场文书
2014年办公室工作总结范文
2014/11/12 职场文书
先进个人总结范文
2015/02/15 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
如何书写你的职业生涯规划书?
2019/06/27 职场文书