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插件FusionCharts绘制2D环饼图效果示例【附demo源码】
Apr 10 jQuery
基于jQuery封装的分页组件
Jun 26 jQuery
jQuery简单实现对数组去重及排序操作实例
Oct 31 jQuery
vue-cli webpack 引入jquery的方法
Jan 10 jQuery
集成vue到jquery/bootstrap项目的方法
Feb 10 jQuery
jquery radio 动态控制选中失效问题的解决方法
Feb 28 jQuery
jQuery表单元素过滤选择器用法实例分析
Feb 20 jQuery
jQuery创建折叠式菜单
Jun 15 jQuery
jquery分页优化操作实例分析
Aug 23 jQuery
jQuery实现弹幕特效
Nov 29 jQuery
jQuery实现带进度条的轮播图
Sep 13 jQuery
jquery实现异步文件上传ajaxfileupload.js
Oct 23 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 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
php数组键值用法实例分析
2015/02/27 PHP
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
JQuery为textarea添加maxlength属性的代码
2010/04/07 Javascript
基于jQuery实现的水平和垂直居中的div窗口
2011/08/08 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
jQuery设置和移除文本框默认值的方法
2015/03/09 Javascript
node.js操作mysql(增删改查)
2015/07/24 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
2016/10/05 Javascript
微信小程序 获取微信OpenId详解及实例代码
2016/10/31 Javascript
etmvc+jQuery EasyUI+combobox多值操作实现角色授权实例
2016/11/09 Javascript
Javascript之面向对象--封装
2016/12/02 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
2016/12/29 Javascript
详解Angular中的自定义服务Service、Provider以及Factory
2017/04/22 Javascript
微信小程序input框中加入小图标的实现方法
2018/06/19 Javascript
jQuery操作事件完整实例分析
2020/01/10 jQuery
vue 判断页面是首次进入还是再次刷新的实例
2020/11/05 Javascript
Python 快速实现CLI 应用程序的脚手架
2017/12/05 Python
TensorFlow利用saver保存和提取参数的实例
2018/07/26 Python
Numpy将二维数组添加到空数组的实现
2019/12/05 Python
Python3将jpg转为pdf文件的方法示例
2019/12/13 Python
python中取绝对值简单方法总结
2020/07/24 Python
Python爬虫爬取ts碎片视频+验证码登录功能
2021/02/22 Python
Canvas高级路径操作之拖拽对象的实现
2019/08/05 HTML / CSS
Nanushka官网:匈牙利服装品牌
2019/08/14 全球购物
英国比较机场停车场网站:Airport Parking Essentials
2019/12/01 全球购物
小学语文教学经验交流材料
2014/06/02 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
同意迁入证明模板
2014/10/26 职场文书
销售2014年度工作总结
2014/12/08 职场文书
西柏坡导游词
2015/02/05 职场文书
教师个人年度总结
2015/02/11 职场文书
暑假安全保证书
2015/02/28 职场文书
党员干部公开承诺书范文
2015/04/27 职场文书
浅析CSS在DevTools 中架构演变
2021/10/05 HTML / CSS
docker 制作mysql镜像并自动安装
2022/05/20 Servers