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 函数链之演变
Apr 07 Javascript
AngularJS入门知识之MVW类框架的编程思想探讨
Dec 08 Javascript
js事件源window.event.srcElement兼容性写法(详解)
Nov 25 Javascript
Jquery删除css属性的简单方法
Dec 04 Javascript
js css自定义分页效果
Feb 24 Javascript
vue路由跳转时判断用户是否登录功能的实现
Oct 26 Javascript
express+vue+mongodb+session 实现注册登录功能
Dec 06 Javascript
浅谈关于JS下大批量异步任务按顺序执行解决方案一点思考
Jan 08 Javascript
jQuery实现模拟搜索引擎的智能提示功能简单示例
Jan 27 jQuery
jQuery事件委托代码实践详解
Jun 21 jQuery
vue Treeselect下拉树只能选择第N级元素实现代码
Aug 31 Javascript
可拖拽组件slider.js使用方法详解
Dec 04 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数组
2006/10/09 PHP
php 数组的指针操作实现代码
2011/02/08 PHP
2014年10个最佳的PHP图像操作库
2014/07/14 PHP
php导入大量数据到mysql性能优化技巧
2014/12/29 PHP
javascript高亮效果的二种实现方法
2008/09/14 Javascript
js this函数调用无需再次抓获id,name或标签名
2014/03/03 Javascript
js变量、作用域及内存详解
2014/09/23 Javascript
JS实现单行文字不间断向上滚动的方法
2015/01/29 Javascript
jQuery实现强制cookie过期方法汇总
2015/05/22 Javascript
javascript轻量级库createjs使用Easel实现拖拽效果
2016/02/19 Javascript
基于JavaScript实现活动倒计时效果
2017/04/20 Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
2017/12/01 Javascript
Vue中的scoped实现原理及穿透方法
2018/05/15 Javascript
Vue.js 十五分钟入门图文教程
2018/09/12 Javascript
jQuery实现侧边栏隐藏与显示的方法详解
2018/12/22 jQuery
Vue渲染过程浅析
2019/03/14 Javascript
js实现单元格拖拽效果
2020/02/10 Javascript
原生JavaScript实现拖动校验功能
2020/09/29 Javascript
VUE-ElementUI 自定义Loading图操作
2020/11/11 Javascript
使用vue编写h5公众号跳转小程序的实现代码
2020/11/27 Vue.js
Python Web框架Flask中使用百度云存储BCS实例
2015/02/08 Python
Python使用面向对象方式创建线程实现12306售票系统
2015/12/24 Python
python numpy元素的区间查找方法
2018/11/14 Python
python 提取tuple类型值中json格式的key值方法
2018/12/31 Python
Python实现的旋转数组功能算法示例
2019/02/23 Python
python实现双色球随机选号
2020/01/01 Python
python属于解释型语言么
2020/06/15 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
解决Python 函数声明先后顺序出现的问题
2020/09/02 Python
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
求职自荐信范文格式
2013/11/29 职场文书
兼职业务员岗位职责
2014/01/01 职场文书
前厅部经理岗位职责范文
2014/02/04 职场文书
三八妇女节趣味活动方案
2014/08/23 职场文书
2015年医院保卫科工作总结
2015/07/23 职场文书