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 相关文章推荐
JS 强制设为首页的代码
Jan 31 Javascript
Javascript 获取字符串字节数的多种方法
Jun 02 Javascript
JavaScript插入动态样式实现代码
Feb 22 Javascript
JavaScript定时显示广告代码分享
Mar 02 Javascript
js生成随机数的过程解析
Nov 24 Javascript
jquery获取select,option所有的value和text的实例
Mar 06 Javascript
JS实现的二叉树算法完整实例
Apr 06 Javascript
关闭Vue计算属性自带的缓存功能方法
Mar 02 Javascript
vue源码学习之Object.defineProperty 对数组监听
May 30 Javascript
vue学习笔记之作用域插槽实例分析
Feb 01 Javascript
前端深入理解Typescript泛型概念
Mar 09 Javascript
js实现简单的无缝轮播效果
Sep 05 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实现根据浏览器跳转不同语言页面代码
2013/08/02 PHP
CI(CodeIgniter)框架介绍
2014/06/09 PHP
php图片处理函数获取类型及扩展名实例
2014/11/19 PHP
JavaScript与HTML结合的基本使用方法整理
2015/10/12 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
2017/01/16 PHP
PHP面向对象程序设计之多态性的应用示例
2018/12/19 PHP
jquery插件开发之实现md5插件
2014/03/17 Javascript
EasyUi datagrid 实现表格分页
2015/02/10 Javascript
jQuery实现checkbox列表的全选、反选功能
2016/11/24 Javascript
jQuery实现文字自动横移
2017/01/08 Javascript
关于AngularJs数据的本地存储详解
2017/01/20 Javascript
vue初尝试--项目结构(推荐)
2018/01/30 Javascript
利用Vue构造器创建Form组件的通用解决方法
2018/12/03 Javascript
Vue组件系列开发之模态框
2019/04/18 Javascript
微信小程序利用Canvas绘制图片和竖排文字详解
2019/06/25 Javascript
Layui数据表格跳转到指定页的实现方法
2019/09/05 Javascript
在layui.use 中自定义 function 的正确方法
2019/09/16 Javascript
Node绑定全局TraceID的实现方法
2019/11/14 Javascript
JS数组方法join()用法实例分析
2020/01/18 Javascript
如何利用nodejs实现命令行游戏
2020/11/24 NodeJs
Python2.x版本中maketrans()方法的使用介绍
2015/05/19 Python
python SSH模块登录,远程机执行shell命令实例解析
2018/01/12 Python
Python生成器以及应用实例解析
2018/02/08 Python
浅析HTML5 Landmark
2020/09/11 HTML / CSS
Marlies Dekkers内衣荷兰官方网店:荷兰奢侈内衣品牌
2020/03/27 全球购物
PHP开发工程师面试问题集锦
2012/11/01 面试题
优秀员工自荐信范文
2013/10/05 职场文书
高中军训感言200字
2014/02/23 职场文书
求职面试个人自我评价
2014/02/28 职场文书
幼儿教师培训感言
2014/03/08 职场文书
餐饮服务食品安全责任书
2014/07/25 职场文书
优秀团员事迹材料1500字
2014/08/31 职场文书
2014年行风建设工作总结
2014/12/01 职场文书
红色影片观后感
2015/06/18 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书
Go语言编译原理之源码调试
2022/08/05 Golang