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 12 jQuery
关于jQuery中fade(),show()起始位置的一点小发现
Apr 25 jQuery
jQuery Tree Multiselect使用详解
May 02 jQuery
jQuery实现radio第一次点击选中第二次点击取消功能
May 15 jQuery
使用jQuery.Pin垂直滚动时固定导航
May 24 jQuery
jQuery实现QQ空间汉字转拼音功能示例
Jul 10 jQuery
基于jQuery实现图片推拉门动画效果的两种方法
Aug 26 jQuery
JQuery选中select组件被选中的值方法
Mar 08 jQuery
jQuery+Cookie实现切换皮肤功能【附源码下载】
Mar 25 jQuery
jquery实现搜索框功能实例详解
Jul 23 jQuery
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
May 04 jQuery
jquery实现的放大镜效果示例
Feb 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 XML error parsing SOAP payload on line 1
2010/06/17 PHP
php生成shtml类用法实例
2014/12/09 PHP
PHP大神的十大优良习惯
2016/09/14 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
2017/06/29 PHP
JQuery操作Select的Options的Bug(IE8兼容性视图模式)
2013/04/21 Javascript
jquery中文乱码的多种解决方法
2013/06/21 Javascript
jquery实现的点击翻书效果代码
2015/11/04 Javascript
BootStrap智能表单实战系列(七)验证的支持
2016/06/13 Javascript
简单分析javascript中的函数
2016/09/10 Javascript
bootstrap响应式导航条模板使用详解(含下拉菜单,弹出框)
2017/11/17 Javascript
js核心基础之构造函数constructor用法实例分析
2019/05/11 Javascript
vue中使用百度脑图kityminder-core二次开发的实现
2019/09/26 Javascript
js实现内置计时器
2019/12/16 Javascript
jquery实现聊天机器人
2020/02/08 jQuery
返回上一个url并刷新界面的js代码
2020/09/12 Javascript
[01:28:44]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第一场 1月10日
2021/03/11 DOTA
python中self原理实例分析
2015/04/30 Python
浅析Python中return和finally共同挖的坑
2017/08/18 Python
Python字符串和字典相关操作的实例详解
2017/09/23 Python
利用python如何处理百万条数据(适用java新手)
2018/06/06 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
2018/10/14 Python
Python数据可视化教程之Matplotlib实现各种图表实例
2019/01/13 Python
Django认证系统实现的web页面实现代码
2019/08/12 Python
基于Python2、Python3中reload()的不同用法介绍
2019/08/12 Python
Django项目中实现使用qq第三方登录功能
2019/08/13 Python
基于python实现简单C/S模式代码实例
2020/09/14 Python
python反编译教程之2048小游戏实例
2021/03/03 Python
ROSEFIELD手表荷兰官方网上商店:北欧极简设计女士腕表品牌
2018/01/24 全球购物
39美元购买一副眼镜或太阳镜:39DollarGlasses.com
2018/06/17 全球购物
linux面试题参考答案(7)
2014/07/24 面试题
上班睡觉检讨书
2014/01/09 职场文书
网络工程师自荐书范文
2014/04/01 职场文书
读群众路线的心得体会
2014/09/03 职场文书
公司领导班子对照检查材料
2014/09/24 职场文书
美术教师个人工作总结
2015/02/06 职场文书
2019年大学生职业生涯规划书最新范文
2019/03/25 职场文书