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插件之validation插件
Mar 29 jQuery
jQuery使用unlock.js插件实现滑动解锁
Apr 04 jQuery
jquery图片放大镜效果
Jun 23 jQuery
使用vue与jquery实时监听用户输入状态的操作代码
Sep 19 jQuery
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
May 09 jQuery
jQuery插件jsonview展示json数据
May 26 jQuery
jQuery 导航自动跟随滚动的实现代码
May 30 jQuery
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
Jan 18 jQuery
JS/jQuery实现简单的开关灯效果【案例】
Feb 19 jQuery
如何使用CSS3和JQuery easing 插件制作绚丽菜单
Jun 18 jQuery
jquery ajax 请求小技巧实例分析
Nov 11 jQuery
jquery插件实现悬浮的菜单
Apr 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教程 变量定义
2009/10/23 PHP
Pain 全世界最小最简单的PHP模板引擎 (普通版)
2011/10/23 PHP
php标签云的实现代码
2012/10/10 PHP
解析php中var_dump,var_export,print_r三个函数的区别
2013/06/21 PHP
两个select之间option的互相添加操作(jquery实现)
2009/11/12 Javascript
js 返回时间戳所对应的具体时间
2010/07/20 Javascript
JSP中使用JavaScript动态插入删除输入框实现代码
2014/06/13 Javascript
JavaScript对Cookie进行读写操作实例
2015/07/25 Javascript
基于JavaScript定位当前的地理位置
2017/04/11 Javascript
原生JS实现自定义滚动条效果
2020/10/27 Javascript
详解express与koa中间件模式对比
2017/08/07 Javascript
在nginx上部署vue项目(history模式)的方法
2017/12/28 Javascript
jQuery实现图片简单轮播功能示例
2018/08/13 jQuery
vue自定义正在加载动画的例子
2019/11/14 Javascript
Vue基于iview实现登录密码的显示与隐藏功能
2020/03/06 Javascript
JavaScript实现多文件下载方法解析
2020/08/07 Javascript
Vue v-for中的 input 或 select的值发生改变时触发事件操作
2020/08/31 Javascript
vue treeselect获取当前选中项的label实例
2020/08/31 Javascript
python调用shell的方法
2013/11/20 Python
python网络编程学习笔记(九):数据库客户端 DB-API
2014/06/09 Python
Python中使用wxPython开发的一个简易笔记本程序实例
2015/02/08 Python
python实现简单五子棋游戏
2019/06/18 Python
Django CBV与FBV原理及实例详解
2019/08/12 Python
PHP统计代码行数的小代码
2019/09/19 Python
pytorch 自定义参数不更新方式
2020/01/06 Python
如何真正的了解python装饰器
2020/08/14 Python
应届毕业生就业自荐信
2013/10/26 职场文书
管理信息系学生的自我评价
2014/01/11 职场文书
《湘夫人》教学反思
2014/02/21 职场文书
销售人员职业生涯规划范文
2014/03/01 职场文书
财务担保书范文
2014/04/02 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
高考升学宴答谢词
2015/01/20 职场文书
新入职员工工作总结
2015/10/15 职场文书
2016年读书月活动总结范文
2016/04/06 职场文书
Java处理延时任务的常用几种解决方案
2022/06/01 Java/Android