jQuery实现文件编码成base64并通过AJAX上传的方法


Posted in jQuery onApril 12, 2018

本文实例讲述了jQuery实现文件编码成base64并通过AJAX上传的方法。分享给大家供大家参考,具体如下:

使用AJAX是无法直接上传文件的,一般都是新建个iframe在它里面完成表单提交的过程以达到异步上传文件的效果。

如此做可以达到比较好的浏览器兼容性,不过代码量会比较大,即使是使用了文件上传插件,例如plupload。

如何能达到灵活的程度呢,能像普通的AJAX提交表单数据那样将文件看成是普通表单参数来对待就好了。

灵光一闪,利用javascript的FileReader对象将文件编码成base64再传服务器不就行了么~

开始动手,丰衣足食。

前端对文件进行base64编码并通过ajax向服务器传输:

<head>
  <meta charset="UTF-8">
</head>
<form onsubmit="return false;">
  <input type="hidden" name="file_base64" id="file_base64">
  <input type="file" id="fileup">
  <input type="submit" value="submit" onclick="$.post('./uploader.php', $(this).parent().serialize());">
</form>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
  $("#fileup").change(function(){
    var v = $(this).val();
    var reader = new FileReader();
    reader.readAsDataURL(this.files[0]);
    reader.onload = function(e){
      console.log(e.target.result);
      $('#file_base64').val(e.target.result);
    };
  });
});
</script>

后端对文件数据解码并保存:

<?php
if (isset($_POST['file_base64'])){
  $file_base64 = $_POST['file_base64'];
  $file_base64 = preg_replace('/data:.*;base64,/i', '', $file_base64);
  $file_base64 = base64_decode($file_base64);
  file_put_contents('./file.save', $file_base64);
}

javascript里的FileReader对象主流浏览器都支持,IE10以上支持,私认为在为小范围提供服务时可以考虑这个异步上传文件的方式,省时又省力,兼容IE系列另当别论。

Reference:

BASE64编码解码工具:
http://tools.3water.com/transcoding/base64

图片转换为Base64编码在线工具:
http://tools.3water.com/transcoding/img2base64

在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.3water.com/password/hash_md5_sha

希望本文所述对大家jQuery程序设计有所帮助。

jQuery 相关文章推荐
jQuery实现鼠标滑过预览图片大图效果的方法
Apr 26 jQuery
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
Jun 01 jQuery
jQuery Form插件使用详解_动力节点Java学院整理
Jul 17 jQuery
Django中使用jquery的ajax进行数据交互的实例代码
Oct 15 jQuery
使用jQuery 操作table 完成单元格合并的实例
Dec 27 jQuery
jQuery实现的简单图片轮播效果完整示例
Feb 08 jQuery
jQuery实现动画、消失、显现、渐出、渐入效果示例
Sep 06 jQuery
jQuery实现为table表格动态添加或删除tr功能示例
Feb 19 jQuery
JQuery事件委托原理与用法实例分析
May 13 jQuery
jquery.pager.js实现分页效果
Jul 29 jQuery
Jquery Datatables的使用详解
Jan 30 jQuery
Jquery 获取相同NAME 或者id删除行操作
Aug 24 jQuery
jQuery实现鼠标点击处心形漂浮的炫酷效果示例
Apr 12 #jQuery
jQuery实现判断上传图片类型和大小的方法示例
Apr 11 #jQuery
[原创]jQuery实现合并/追加数组并去除重复项的方法
Apr 11 #jQuery
jQuery中复合选择器简单用法示例
Mar 31 #jQuery
jQuery中内容过滤器简单用法示例
Mar 31 #jQuery
jQuery中可见性过滤器简单用法示例
Mar 31 #jQuery
jQuery实现的上传图片本地预览效果简单示例
Mar 29 #jQuery
You might like
php网站地图生成类示例
2014/01/13 PHP
PHP扩展CURL的用法详解
2014/06/20 PHP
ThinkPHP整合百度Ueditor图文教程
2014/10/21 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
2015/09/29 PHP
thinkPHP查询方式小结
2016/01/09 PHP
Laravel5.1框架注册中间件的三种场景详解
2019/07/09 PHP
JavaScript CSS修改学习第三章 修改样式表
2010/02/19 Javascript
Jquery Select操作方法集合脚本之家特别版
2010/05/17 Javascript
multiSteps 基于Jquery的多步骤滑动切换插件
2011/07/22 Javascript
jquery 插件学习(三)
2012/08/06 Javascript
node.js中的fs.existsSync方法使用说明
2014/12/17 Javascript
JavaScript中DOM详解
2015/04/13 Javascript
jquery实现的Accordion折叠面板效果代码
2015/09/02 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
AngularJS中的指令全面解析(必看)
2016/05/20 Javascript
jquery实现全选、不选、反选的两种方法
2016/09/06 Javascript
vue.js异步上传文件前后端实现代码
2017/08/22 Javascript
VUE 3D轮播图封装实现方法
2018/07/03 Javascript
vue.js通过路由实现经典的三栏布局实例代码
2018/07/08 Javascript
vue2.0页面前进刷新回退不刷新的实现方法
2018/07/31 Javascript
Python中格式化format()方法详解
2017/04/01 Python
python 字符串转列表 list 出现\ufeff的解决方法
2017/06/22 Python
Pycharm设置去除显示的波浪线方法
2018/10/28 Python
docker django无法访问redis容器的解决方法
2019/08/21 Python
耐克波兰官方网站:Nike波兰
2019/09/03 全球购物
酒店司机岗位职责
2013/12/14 职场文书
期末自我鉴定
2014/01/23 职场文书
微观物理专业自荐信
2014/01/26 职场文书
圣诞节红领巾广播稿
2014/02/03 职场文书
公司开业庆典主持词
2014/03/21 职场文书
2015年社区综治工作总结
2015/04/21 职场文书
汉字听写大会观后感
2015/06/12 职场文书
2016学校先进党组织事迹材料
2016/02/29 职场文书
手把手教你制定暑期学习计划,让你度过充实的暑假
2019/08/22 职场文书
Python线程池与GIL全局锁实现抽奖小案例
2022/04/13 Python