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中遭遇级联表达式陷阱
Mar 08 Javascript
使一个函数作为另外一个函数的参数来运行的javascript代码
Aug 13 Javascript
javascript 另一种图片滚动切换效果思路
Apr 20 Javascript
html超链接打开窗口大小的方法
Mar 05 Javascript
Javascript事件实例详解
Nov 06 Javascript
JavaScript sub方法入门实例(把字符串显示为下标)
Oct 17 Javascript
HTML5+setCutomValidity()函数验证表单实例分享
Apr 24 Javascript
JS继承之借用构造函数继承和组合继承
Sep 07 Javascript
JavaScript制作弹出层效果
Dec 02 Javascript
学习使用Bootstrap栅格系统
May 11 Javascript
浅谈angular.js跨域post解决方案
Aug 30 Javascript
利用d3.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
使用bcompiler对PHP文件进行加密的代码
2010/08/29 PHP
php实现批量下载百度云盘文件例子分享
2014/04/10 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
2015/04/09 PHP
php curl 模拟登录并获取数据实例详解
2016/12/22 PHP
PHP实现类似题库抽题效果
2018/08/16 PHP
use jscript List Installed Software
2007/06/11 Javascript
超轻量级的基于jquery的三级展开列表
2011/04/26 Javascript
jQuery实现可拖动的浮动层完整代码
2013/05/27 Javascript
解析javascript系统错误:-1072896658的解决办法
2013/07/08 Javascript
优化javascript的执行效率一些方法总结
2013/12/25 Javascript
Jquery.Form 异步提交表单的简单实例
2014/03/03 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
Javascript设计模式理论与编程实战之简单工厂模式
2015/11/03 Javascript
浅析javascript函数表达式
2016/02/10 Javascript
jQuery UI制作选项卡(tabs)
2016/12/13 Javascript
详解vue静态资源打包中的坑与解决方案
2018/02/05 Javascript
vue组件开发之用户无限添加自定义填写表单的方法
2018/08/28 Javascript
解决vue 绑定对象内点击事件失效问题
2018/09/05 Javascript
基于vue.js组件实现分页效果
2018/12/29 Javascript
用npm-run实现自动化任务的方法示例
2019/01/14 Javascript
nodejs实现聊天机器人功能
2019/09/19 NodeJs
在Koa.js中实现文件上传的接口功能
2019/10/08 Javascript
使用webpack搭建pixi.js开发环境
2020/02/12 Javascript
跟老齐学Python之从格式化表达式到方法
2014/09/28 Python
Python新手在作用域方面经常容易碰到的问题
2015/04/03 Python
浅谈Python中的zip()与*zip()函数详解
2018/02/24 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
Python排序函数的使用方法详解
2020/12/11 Python
教师的实习鉴定
2013/12/15 职场文书
经销商会议欢迎词
2014/01/11 职场文书
视光学毕业生自荐书范文
2014/02/13 职场文书
工程安全员岗位职责
2014/03/09 职场文书
科技活动周标语
2014/10/08 职场文书
离婚财产分隔协议书
2014/10/23 职场文书
电影雨中的树观后感
2015/06/15 职场文书
网络安全倡议书(3篇)
2019/09/18 职场文书