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 三种创建对象的方法
Oct 16 Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
Mar 15 Javascript
如何使用jQuery来处理图片坏链具体实现步骤
May 02 Javascript
基于jquery编写的横向自适应幻灯片切换特效的实例代码
Aug 06 Javascript
jQuery学习笔记之创建DOM元素
Jan 19 Javascript
基于jquery实现动态竖向柱状条特效
Feb 12 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
Nov 16 Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
Feb 09 Javascript
轻松理解JavaScript之AJAX
Mar 15 Javascript
详解Vue-cli 创建的项目如何跨域请求
May 18 Javascript
浅谈Angular HttpClient简单入门
May 04 Javascript
小程序图片长按识别功能的实现方法
Aug 30 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
星际争霸教主Flash的ID由来:你永远不会知道他之前的ID是www!
2019/01/18 星际争霸
编写PHP的安全策略
2006/10/09 PHP
php短域名转换为实际域名函数
2011/01/17 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
2017/02/14 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
2017/03/17 PHP
Yii2框架redis基本应用示例
2018/07/13 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
2019/10/08 PHP
PHP重载基础知识回顾
2020/09/10 PHP
javascript学习笔记(八) js内置对象
2012/06/19 Javascript
JS网页图片按比例自适应缩放实现方法
2014/01/15 Javascript
Javascript中的异步编程规范Promises/A详细介绍
2014/06/06 Javascript
实例讲解避免javascript冲突的方法
2016/01/03 Javascript
js实现四舍五入完全保留两位小数的方法
2016/08/02 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
2016/09/26 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
2016/12/21 Javascript
NodeJS配置HTTPS服务实例分享
2017/02/19 NodeJs
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
Vue的Flux框架之Vuex状态管理器
2017/07/30 Javascript
jquery实现图片跟随鼠标的实例
2017/10/17 jQuery
纯js代码生成可搜索选择下拉列表的实例
2018/01/11 Javascript
[05:04]完美世界携手游戏风云打造 卡尔工作室地图界面篇
2013/04/23 DOTA
[02:25]专访DOTA2负责人Erik 国际邀请赛暂不会离开西雅
2014/07/21 DOTA
[01:13]2015国际邀请赛线下观战现场
2015/08/08 DOTA
学习python的几条建议分享
2013/02/10 Python
在Python的web框架中编写创建日志的程序的教程
2015/04/30 Python
通过实例浅析Python对比C语言的编程思想差异
2015/08/30 Python
实例探究Python以并发方式编写高性能端口扫描器的方法
2016/06/14 Python
Desigual美国官方网站:西班牙服装品牌
2019/03/29 全球购物
JAVA高级程序员面试题
2013/09/06 面试题
工程造价自荐信
2013/10/09 职场文书
零件设计自荐信范文
2013/11/27 职场文书
《搭石》教学反思
2014/04/07 职场文书
教师自我剖析材料(群众路线)
2014/09/29 职场文书
幼儿园园长个人总结
2015/03/02 职场文书
求职信内容一般写什么?
2015/03/20 职场文书
小学生运动会广播
2015/08/19 职场文书