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 Plupload上传插件的使用
Apr 19 jQuery
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
Jun 01 jQuery
关于jQuery.ajax()的jsonp碰上post详解
Jul 02 jQuery
jQuery Autocomplete简介_动力节点Java学院整理
Jul 17 jQuery
jQuery 利用ztree实现树形表格的实例代码
Sep 27 jQuery
基于jquery实现左右上下移动效果
May 02 jQuery
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
Mar 06 jQuery
简单易扩展可控性强的Jquery转盘抽奖程序
Mar 16 jQuery
详解jquery和vue对比
Apr 16 jQuery
jQuery实现提交表单时不提交隐藏div中input的方法
Oct 08 jQuery
jQuery与原生JavaScript选择HTML元素集合用法对比分析
Nov 26 jQuery
jquery实现轮播图特效
Apr 12 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 Undefined index和Undefined variable的解决方法
2008/03/27 PHP
PHP中usort在值相同时改变原始位置问题的解决方法
2011/11/27 PHP
PHP字符串长度计算 - strlen()函数使用介绍
2013/10/15 PHP
PHP中的output_buffering详细介绍
2014/09/27 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
JavaScript 模拟用户单击事件
2009/12/31 Javascript
jQuery操作select下拉框的text值和value值的方法
2014/05/31 Javascript
AngularJS学习笔记之TodoMVC的分析
2015/02/22 Javascript
JS获取数组最大值、最小值及长度的方法
2015/11/24 Javascript
AngularJS实现元素显示和隐藏的几个案例
2015/12/09 Javascript
分享网页检测摇一摇实例代码
2016/01/14 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
浅析location.href跨窗口调用函数
2016/11/22 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
ionic2中使用自动生成器的方法
2018/03/04 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
tsconfig.json配置详解
2019/05/17 Javascript
layUI的验证码功能及校验实例
2019/10/25 Javascript
javascript中闭包closure的深入讲解
2021/03/03 Javascript
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
Python信息抽取之乱码解决办法
2017/06/29 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
Python Opencv图像处理基本操作代码详解
2020/08/31 Python
欧洲最大的品牌水上运动服装和设备在线零售商:Wuituit Outlet
2018/05/05 全球购物
新西兰网上购物,折扣店:BestDeals.co.nz
2019/03/20 全球购物
Etam艾格英国官网:法国著名女装品牌
2019/04/15 全球购物
全球高级音频和视频专家:HiDef Lifestyle
2019/08/02 全球购物
关键字final的用法
2013/10/02 面试题
运动会跳远广播稿
2014/02/04 职场文书
委托书的写法
2014/08/30 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
业务员岗位职责
2015/02/03 职场文书
2015秋季幼儿园开学通知
2015/07/16 职场文书
MySQL优化之慢日志查询
2022/06/10 MySQL
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
2022/06/25 Servers