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 相关文章推荐
jquery.jstree 增加节点的双击事件代码
Jul 27 Javascript
拥抱模块化的JavaScript
Mar 07 Javascript
jQuery使用动态渲染表单功能完成ajax文件下载
Jan 15 Javascript
js获取input标签的输入值实现代码
Aug 05 Javascript
js实现的捐赠管理完整实例
Jan 20 Javascript
JQuery中attr方法和removeAttr方法用法实例
May 18 Javascript
JQuery实现图片轮播效果
Sep 15 Javascript
JavaScript的new date等日期函数在safari中遇到的坑
Oct 24 Javascript
Vue.js组件使用开发实例教程
Nov 01 Javascript
分享一个精简的vue.js 图片lazyload插件实例
Mar 13 Javascript
用Golang运行JavaScript的实现示例
Nov 25 Javascript
基于canvasJS在PHP中制作动态图表
May 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
php小偷相关截取函数备忘
2010/11/28 PHP
基于PHP读取TXT文件向数据库导入海量数据的方法
2013/04/23 PHP
php创建基本身份认证站点的方法详解
2013/06/08 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
2015/11/17 PHP
大家须知简单的php性能优化注意点
2016/01/04 PHP
浅谈PHP的反射机制
2016/12/15 PHP
在html页面上拖放移动标签
2010/01/08 Javascript
js点击页面其它地方将某个显示的DIV隐藏
2012/07/12 Javascript
js里怎么取select标签里的值并修改
2012/12/10 Javascript
正则表达式中特殊符号及正则表达式的几种方法总结(replace,test,search)
2013/11/26 Javascript
js复制网页内容并兼容各主流浏览器的代码
2013/12/17 Javascript
node.js中的http.request方法使用说明
2014/12/14 Javascript
JS生成不重复的随机数组的简单实例
2016/07/10 Javascript
标准的js无缝滚动效果
2016/08/30 Javascript
Vue axios 中提交表单数据(含上传文件)
2017/07/06 Javascript
JS正则表达式完美实现身份证校验功能
2017/10/18 Javascript
angularjs实现猜大小功能
2017/10/23 Javascript
vue页面离开后执行函数的实例
2018/03/13 Javascript
vue使用原生js实现滚动页面跟踪导航高亮的示例代码
2018/10/25 Javascript
微信小程序wx.request拦截器使用详解
2019/07/09 Javascript
更改Python命令行交互提示符的方法
2015/01/14 Python
Python描述器descriptor详解
2015/02/03 Python
用Python编写一个简单的俄罗斯方块游戏的教程
2015/04/03 Python
python中解析json格式文件的方法示例
2017/05/03 Python
python数值基础知识浅析
2019/11/19 Python
python迭代器常见用法实例分析
2019/11/22 Python
python实现自动打卡的示例代码
2020/10/10 Python
联想英国官网:Lenovo英国
2019/07/17 全球购物
斯图尔特·韦茨曼鞋加拿大官网:Stuart Weitzman加拿大
2019/10/13 全球购物
澳大利亚第一旅行车和房车配件店:Caravan RV Camping
2020/12/26 全球购物
银行会计财务工作个人的自我评价
2013/10/29 职场文书
运动会领导邀请函
2014/01/10 职场文书
班级学习计划书
2014/04/27 职场文书
企业爱岗敬业演讲稿
2014/09/04 职场文书
廉政文化进校园广播稿
2014/10/20 职场文书
基于PostgreSQL/openGauss 的分布式数据库解决方案
2021/12/06 PostgreSQL