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 $.data()方法使用注意细节
Dec 31 Javascript
js动态移动滚动条至底部示例代码
Apr 24 Javascript
jQuery多级弹出菜单插件ZoneMenu
Dec 18 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
Jan 04 Javascript
JS实现输入框提示文字点击时消失效果
Jul 19 Javascript
如何使用vuejs实现更好的Form validation?
Apr 07 Javascript
详解nuxt sass全局变量(公共scss解决方案)
Jun 27 Javascript
学习jQuery中的noConflict()用法
Sep 28 jQuery
微信小程序实现拖拽功能
Sep 26 Javascript
微信小程序工具函数封装
Oct 28 Javascript
vue 中的 render 函数作用详解
Feb 28 Javascript
vue实现购物车列表
Jun 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获取$_POST同名参数数组的实现介绍
2013/06/30 PHP
thinkPHP框架中执行事务的方法示例
2018/05/31 PHP
IE FF OPERA都可用的弹出层实现代码
2009/09/29 Javascript
js浮点数精确计算(加、减、乘、除)
2013/12/26 Javascript
动态创建script在IE中缓存js文件时导致编码的解决方法
2014/05/04 Javascript
js限制文本框只能输入数字方法小结
2014/06/16 Javascript
js构造函数、索引数组和属性的实现方式和使用
2014/11/16 Javascript
Node.js 去掉种子(torrent)文件里的邪恶信息
2015/03/27 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
AngularJS 获取ng-repeat动态生成的ng-model值实例详解
2016/11/29 Javascript
js实现日历的简单算法
2017/01/24 Javascript
js, jQuery实现全选、反选功能
2017/03/08 Javascript
layui--select使用以及下拉框实现键盘选择的例子
2019/09/24 Javascript
JS实现瀑布流效果
2020/03/07 Javascript
js实现购物车商品数量加减
2020/09/21 Javascript
python中文编码问题小结
2014/09/28 Python
Python中将字典转换为列表的方法
2016/09/21 Python
Python+MongoDB自增键值的简单实现
2016/11/04 Python
python中计算一个列表中连续相同的元素个数方法
2018/06/29 Python
很酷的python表白工具 你喜欢我吗
2019/04/11 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
2019/07/08 Python
python rsa实现数据加密和解密、签名加密和验签功能
2019/09/18 Python
PyCharm 专业版安装图文教程
2020/02/20 Python
Django自定义列表 models字段显示方式
2020/04/03 Python
利用Python实现某OA系统的自动定位功能
2020/05/27 Python
英国领先的电视购物零售商:Ideal World
2019/03/18 全球购物
应届生法律求职信
2013/10/22 职场文书
采购部岗位职责
2013/11/24 职场文书
市三好学生主要事迹
2014/01/28 职场文书
《值日生》教学反思
2014/02/17 职场文书
集中采购方案
2014/06/10 职场文书
学习优秀共产党员先进事迹思想报告
2014/09/17 职场文书
2015年基建工作总结范文
2015/05/23 职场文书
导游词之千岛湖
2019/09/23 职场文书
k-means & DBSCAN 总结
2021/04/27 Python
Python万能模板案例之matplotlib绘制甘特图
2022/04/13 Python