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-data的三种用法
Apr 18 jQuery
jQuery扩展_动力节点Java学院整理
Jul 05 jQuery
快速掌握jquery分页插件jqPaginator的使用方法
Aug 09 jQuery
jquery如何实现点击空白处隐藏元素
Dec 05 jQuery
jQuery动态添加li标签并添加属性和绑定事件方法
Feb 24 jQuery
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
Apr 17 jQuery
jQuery模拟12306城市选择框功能简单实现方法示例
Aug 13 jQuery
jQuery超简单遮罩层实现方法示例
Sep 06 jQuery
jQuery+css last-child实现选择最后一个子元素操作示例
Dec 10 jQuery
jQuery实现弹出层效果
Dec 10 jQuery
jQuery单页面文字搜索插件jquery.fullsearch.js的使用方法
Feb 04 jQuery
jQuery实现简单评论区功能
Oct 26 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者的疑难问答(2)
2006/10/09 PHP
提升PHP性能的21种方法介绍
2013/06/25 PHP
php加速器eAccelerator的配置参数、API详解
2014/05/05 PHP
浅谈PHP中JSON数据操作
2015/07/01 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
2016/05/27 PHP
iis6手工创建网站后无法运行php脚本的解决方法
2017/06/08 PHP
Yii2.0 RESTful API 基础配置教程详解
2018/12/26 PHP
批量实现面向对象的实例代码
2013/07/01 Javascript
js jquery获取随机生成id的服务器控件的三种方法
2013/07/11 Javascript
javascript实现获取浏览器版本、操作系统类型
2015/01/29 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
2015/08/30 Javascript
jquery实现文本框textarea自适应高度
2016/03/09 Javascript
Angular.js自定义指令学习笔记实例
2017/02/24 Javascript
Vue中的ref作用详解(实现DOM的联动操作)
2017/08/21 Javascript
element-ui组件table实现自定义筛选功能的示例代码
2019/03/15 Javascript
实例详解带参数的 npm script
2019/05/28 Javascript
简单的通用表达式求10乘阶示例
2014/03/03 Python
python实现DNS正向查询、反向查询的例子
2014/04/25 Python
Python中Collection的使用小技巧
2014/08/18 Python
Python中用format函数格式化字符串的用法
2015/04/08 Python
利用python写个下载teahour音频的小脚本
2017/05/08 Python
Python3 log10()函数简单用法
2019/02/19 Python
基于Python实现扑克牌面试题
2019/12/11 Python
英国品牌男装折扣网站:Brown Bag
2018/03/08 全球购物
斯图尔特·韦茨曼鞋加拿大官网:Stuart Weitzman加拿大
2019/10/13 全球购物
经典安踏广告词
2014/03/21 职场文书
工伤赔偿协议书范本
2014/04/15 职场文书
秋天的怀念教学反思
2014/04/28 职场文书
幼儿园感恩节活动方案2014
2014/10/11 职场文书
老公保证书
2015/01/17 职场文书
2015年“7.11”世界人口日宣传活动方案
2015/05/06 职场文书
给男朋友的道歉短信
2015/05/12 职场文书
食堂管理制度范本
2015/08/04 职场文书
如何判断pytorch是否支持GPU加速
2021/06/01 Python
Win11怎样将锁屏账户头像图片改成动画视频
2021/11/21 数码科技
nginx rewrite功能使用场景分析
2022/05/30 Servers