JavaScript实现无刷新上传预览图片功能


Posted in Javascript onAugust 02, 2017

无刷新上传功能如何实现?手写无刷新上传要用到两个东西,FormData和FileReader。

FileReader 用于图片浏览。

FormData 用于ajax请求。

html代码

先创建表单跟图片的容器

<form enctype="multipart/form-data" id="oForm">
    <input type="file" name="file" id="file" onchange="readAsDataURL()" />
    <input type="button" value="提交" onclick="doUpload()" />
  </form>
  <div>
    <img alt="" id="img"/>
  </div>

javascript代码

FormData:

通过FormData对象可以组装一组用 XMLHttpRequest发送请求的键/值对。它可以更灵活方便的发送表单数据, 因为可以独立于表单使用。如果你把表单的编码类型设置为multipart/form-data ,则通过FormData传输 的数据格式和表单通过submit() 方法传输的数据格式相同。

在这里FormData对象是用来获取form表单内的所有input数据,然后使用ajax请求发送数据到指定url,就不会出现表单提交时跳转的情况。

function doUpload() { 
     var formData = new FormData($( "#oForm" )[0]); 
     console.log(formData); 
     $.ajax({ 
       url: 'pp', 
       type: 'POST', 
       data: formData, 
       async: false, 
       cache: false, 
       contentType: false, 
       processData: false, 
       success: function (returndata) { 
         console.log(returndata); 
       }, 
       error: function (returndata) { 
         console.log(returndata); 
       } 
     }); 
  }

FileReader:

FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容, 使用 File 或 Blob 对象指定要读取的文件或数据。

在这里FileReader对象是用来获取file上来的图片并把图片转换成Data URL形式显示在事先创建的 容器中。

function readAsDataURL(){
  //检验是否为图像文件
    var file = document.getElementById("file").files[0];
    if(!/image\/\w+/.test(file.type)){
      alert("看清楚,这个需要图片!");

      return false;
    }else{
    var reader = new FileReader();
    //将文件以Data URL形式读入页面
    reader.readAsDataURL(file);
    reader.onload=function(e){
      var result=document.getElementById("img");
      //显示文件
      result.src= this.result ;
    }
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript XML操作 封装类
Jul 01 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
Mar 02 Javascript
使用Javascript实现选择下拉菜单互移并排序
Feb 23 Javascript
js完整倒计时代码分享
Sep 18 Javascript
纯JavaScript手写图片轮播代码
Oct 20 Javascript
html判断当前页面是否在iframe中的实例
Nov 30 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
May 20 jQuery
Vue动态组件实例解析
Aug 20 Javascript
JS实现在文本指定位置插入内容的简单示例
Dec 22 Javascript
vue 实现边输入边搜索功能的实例讲解
Sep 16 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
Jun 13 Javascript
微信小程序批量上传图片到七牛(推荐)
Dec 19 Javascript
基于jquery实现多选下拉列表
Aug 02 #jQuery
基于LayUI分页和LayUI laypage分页的使用示例
Aug 02 #Javascript
使用JavaScript实现链表的数据结构的代码
Aug 02 #Javascript
javascript 取小数点后几位几种方法总结
Aug 02 #Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
Aug 02 #Javascript
jQuery接受后台传递的List的实例详解
Aug 02 #jQuery
angular $watch 一个变量的变化(实例讲解)
Aug 02 #Javascript
You might like
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
2019/06/12 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
js 利用className得到对象的实现代码
2011/11/15 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
告诉你什么是javascript的回调函数
2014/09/04 Javascript
js生成验证码并直接在前端判断
2015/05/15 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
2015/09/05 Javascript
Bootstrap每天必学之按钮(Button)插件
2016/04/25 Javascript
jQuery设置图片等比例缩小的方法
2017/04/29 jQuery
vue.js框架实现表单排序和分页效果
2017/08/09 Javascript
Js利用console计算代码运行时间的方法示例
2017/09/24 Javascript
vuejs使用$emit和$on进行组件之间的传值的示例
2017/10/04 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
基于 D3.js 绘制动态进度条的实例详解
2018/02/26 Javascript
详解原生JS动态添加和删除类
2019/03/26 Javascript
Vue scoped及deep使用方法解析
2020/08/01 Javascript
[01:00:35]2018DOTA2亚洲邀请赛3月30日B组 EffcetVSMineski
2018/03/31 DOTA
[51:53]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第二场 11.01
2020/11/02 DOTA
Python中Continue语句的用法的举例详解
2015/05/14 Python
SQLite3中文编码 Python的实现
2017/01/11 Python
基于python指定包的安装路径方法
2018/10/27 Python
Python爬虫实现爬取百度百科词条功能实例
2019/04/05 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
2020/06/06 Python
Python如何执行系统命令
2020/09/23 Python
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
2020/11/17 Python
python邮件中附加文字、html、图片、附件实现方法
2021/01/04 Python
html5利用canvas绘画二级树形结构图的示例
2017/09/27 HTML / CSS
党员创先争优活动总结
2014/05/04 职场文书
民政局办理协议离婚(范本)
2014/10/25 职场文书
2014年政府采购工作总结
2014/12/09 职场文书
大学生年度个人总结
2015/02/15 职场文书
开学第一天的感想
2015/08/10 职场文书
2019经典广告词集锦!
2019/07/02 职场文书
2019年员工晋升管理制度范本!
2019/07/08 职场文书
浅谈Python响应式类库RxPy
2021/06/14 Python
如何用Python搭建gRPC服务
2021/06/30 Python