📘
技术积累
  • 简介
  • 学习方法
    • 如何提高编程技能
  • 基础知识
    • Linux
      • Linux常用指令
      • rsync
      • VIM
      • tmate命令行分享
      • 命令别名存储
      • 项目服务器重启
    • 设计模式
    • 自动化接口使用
    • 项目经理培训
    • 报价策略
    • 培训材料撰写
  • 工具
    • Ajax
    • AutV
    • axios
    • Babel
    • bower
    • codecov
    • crypto
    • CSS3D
    • Docker
    • Echarts
    • Git
      • 如何删除项目
      • 多个ssh_key的生成与使用
      • 常用命令清单
    • Gitbook
      • Gitbook 更多配置
      • Markdown 标记示例
    • gulp
    • Istanbul
    • JEST
    • jMeter
    • js-md5
    • Kama
    • LESS Sass 编译工具Koala介绍
    • Lodash
    • Markdown
    • Maven
    • Moment
    • Nginx
    • NPM
    • NVM
    • particles.js粒子效果
    • PM2
    • Qs
    • Swagger
    • Webpack
    • Webpack
    • Yarn
    • Yeoman使用
  • 平台
    • 代码托管平台 GitLab
    • 代码安全平台 sonarqube
  • 语言和框架
    • 工作流
    • Angular
      • FUSE-Angular前端框架项目初始化
      • AngularJs-toaster-Angular提示弹框插件
      • ng-file-upload-Angular上传图片插件
      • ngclipboard-Angular复制到剪贴板插件
    • Vue
      • ElementUI-Vue前端框架项目初始化
      • clipboard使用
      • mobileSelect.js使用
      • vue-cookies使用
      • vue-fullpage使用
      • vue-router使用
      • Vue的Ref属性
      • Vuex使用
      • Vux使用
      • vux-uploader使用
      • Vue生命周期图例
      • iview-loader使用
    • cycleJs
    • ES6
      • async/await
    • react
      • react生命周期
      • create-react-app
      • Rematch
      • react-router
      • react-router-dom
      • css-in-js
    • TypeScript
      • VueAndTypeScript
    • 微信小程序
    • Hexo博客框架
      • Hexo博客框架-图片问题处理
      • Hexo博客框架-切换主题
    • SmartClient
    • HybridApp混合开发
      • uniapp
  • 代码审查
    • 代码命名规范
    • 页面代码结构
    • JavaScript标准编码风格
    • AirbnbJavaScript风格指南
  • 其他
    • 收藏|激发灵感的33套网页配色方案(附色值)
    • KPI&OKR
    • 测试自动化
    • view
    • 前端面试
      • 项目方面
      • html+css
      • JavaScript方面
      • JavaScript面试
      • 框架方面
      • 前端面试3+1
        • 20190420
        • 20190419
        • 20190418
        • 20190417
    • Linux面试题
    • JAVA面试
    • 测试面试
    • 钉钉使用
    • sd360
  • 前端知识积累
    • css3单位汇总
    • CSS解决loading效果
    • 深度克隆的方法
    • 加密技术
    • 解决ios下的微信页面背景音乐无法自动播放问题
    • 一套绝佳的图标字体库和CSS框架:Font Awesome
    • 关于ico图标不显示解决办法
    • 提升页面响应速度
    • innerHTML引入的script如何使用
    • JavaMap转Json
    • JS开发工具大全
    • 移动端插件
    • 移动端页面通过前端方法禁止ios页面横屏方法
    • 图片资源网站
    • 排序方式
    • 图片预览上传
    • Windows部署时脚本报错
Powered by GitBook
On this page

Was this helpful?

  1. 前端知识积累

图片预览上传

Previous排序方式NextWindows部署时脚本报错

Last updated 4 years ago

Was this helpful?

使用 类型为file 表单的提交 new FileReader()读取本地文件 进行预览 *表单提交避免刷新页面 让form 指向 iframe再监听iframe中返回的内容

效果展示

<form action="/uploadAuditInf.do" id="myForm" method="post"  enctype="multipart/form-data" accept-charset="UTF-8" target="aa">
  <div class="upload-area">
    <div class="upload-item">
      <div class="upload-placeholder">
        <div class="upload-add-icon"></div>
        <p>上传手持银行卡照</p>
        <input type="file" name="file" class="upload-file" onchange="preview(this,3)" accept="image/gif, image/jpeg" >
        <div class="upload-img"></div>
        <div class="upload-hover" onclick="removeImg(this,3)">
          <span >点击重新上传</span>
        </div>
      </div>
    </div>
  </div>
</form>
//防止防止表单提交页面跳转
<iframe name="aa" src="" style="display:none"></iframe>
  // 图片预览
  function preview(file,num) {
    var viewImg = $('.upload-img')[num];
    if (file.files && file.files[0]) {
      if(checkSize(file)){
        var reader = new FileReader();
        reader.onload = function(evt) {
          viewImg.innerHTML = '<img src="' + evt.target.result + '" />';
          $(viewImg).next().addClass('upload-hover2')
        }
        reader.readAsDataURL(file.files[0]);
      }else{
        Walert('图片质量不要超过2M',3)
        file.value=''
      }
    } else {
      viewImg.innerHTML = '<div class="img" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src=\'' + file.value + '\'"></div>';
    }
  }
  // 检查图片大小 不超过2M
  function checkSize(file){
    if(file.files[0].size >1024*1024*2){
      return false
    }else{
      return true
    }
  }
  // 提交图片
  function submitImg(){
    //触发表单提交
    //监听页面返回值 
    var t = setInterval(function() {
      //获取iframe标签里body元素里的文字。即服务器响应过来的"上传成功"或"上传失败"
      var word = $("iframe[name='aa']").contents().find("body").text();
      if (word != "") {
          alert('finishUpload')//上传成功后的操作
          clearInterval(t);   //清除定时器
        }
      }, 1000);
  }
上传图片效果展示