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字符串对象的常用方法简明版
Jun 26 Javascript
javascript检测是否联网的实现代码
Sep 28 Javascript
项目中常用的JS方法整理
Jan 30 Javascript
js下拉选择框与输入框联动实现添加选中值到输入框的方法
Aug 17 Javascript
详解基于Bootstrap扁平化的后台框架Ace
Nov 27 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
Aug 23 Javascript
微信小程序 欢迎页面的制作(源码下载)
Jan 09 Javascript
Bootstrap一款超好用的前端框架
Sep 25 Javascript
使用p5.js临摹动态图片
Nov 04 Javascript
小程序开发之模态框组件封装
Apr 23 Javascript
vue实现点击按钮“查看详情”弹窗展示详情列表操作
Sep 09 Javascript
浅谈Vue开发人员的7个最好的VSCode扩展
Jan 20 Vue.js
基于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
用Flash图形化数据(二)
2006/10/09 PHP
phpmyadmin 3.4 空密码登录的实现方法
2010/05/29 PHP
php开发过程中关于继承的使用方法分享
2011/06/17 PHP
PHPMailer邮件发送的实现代码
2013/05/04 PHP
Javascript实例教程(19) 使用HoTMetal(7)
2006/12/23 Javascript
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
JavaScript 放大镜 放大倍率和视窗尺寸
2011/05/09 Javascript
鼠标移动到图片名上,显示图片的简单实例
2013/07/14 Javascript
获取当前点击按钮的id用this.id实现
2014/03/17 Javascript
jQuery数据缓存用法分析
2015/02/20 Javascript
JQuery DIV 动态隐藏和显示的方法
2016/06/23 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
2019/09/20 Javascript
解决Vue-Router升级导致的Uncaught (in promise)问题
2020/08/07 Javascript
[01:05:00]2018国际邀请赛 表演赛 Pain vs OpenAI
2018/08/24 DOTA
pytorch 把MNIST数据集转换成图片和txt的方法
2018/05/20 Python
Python利用Django如何写restful api接口详解
2018/06/08 Python
python 获取键盘输入,同时有超时的功能示例
2018/11/13 Python
Python hexstring-list-str之间的转换方法
2019/06/12 Python
Django app配置多个数据库代码实例
2019/12/17 Python
Tensorflow中tf.ConfigProto()的用法详解
2020/02/06 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
2020/02/14 Python
Pycharm+Python工程,引用子模块的实现
2020/03/09 Python
jupyter notebook oepncv 显示一张图像的实现
2020/04/24 Python
html5-websocket基于远程方法调用的数据交互实现
2012/12/04 HTML / CSS
HTML5 canvas实现移动端上传头像拖拽裁剪效果
2016/03/14 HTML / CSS
澳大利亚最受欢迎的美发和美容在线商店:Catwalk
2018/12/12 全球购物
日语专业毕业生自荐信
2013/11/11 职场文书
办公室前台的岗位职责
2013/12/20 职场文书
大学生冰淇淋店商业计划书
2014/01/14 职场文书
追悼会主持词
2014/03/20 职场文书
质量安全标语
2014/06/07 职场文书
贵阳市党的群众路线教育实践活动党(工)委领导班子整改方案
2014/10/26 职场文书
2015年七夕爱情寄语
2015/03/24 职场文书
Mysql 设置boolean类型的操作
2021/06/04 MySQL
Unicode中的CJK(中日韩统一表意文字)字符小结
2021/12/06 HTML / CSS
Python多线程实用方法以及共享变量资源竞争问题
2022/04/12 Python