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 extend()详解及简单实例
May 06 jQuery
jQuery实现动态删除LI的方法
May 30 jQuery
jQuery列表检索功能实现代码
Jul 17 jQuery
jQuery Pagination分页插件_动力节点Java学院整理
Jul 17 jQuery
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
Aug 17 jQuery
jQuery实现的电子时钟效果完整示例
Apr 28 jQuery
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
May 31 jQuery
jQuery实现基本隐藏与显示效果的方法详解
Sep 05 jQuery
jQuery实现动态添加和删除input框代码实例
Mar 29 jQuery
jQuery+ajax实现批量删除功能完整示例
Jun 06 jQuery
jquery实现两个div中的元素相互拖动的方法分析
Apr 05 jQuery
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
Jan 29 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中namespace及use用法分析
2016/12/06 PHP
PHP设计模式之委托模式定义与用法简单示例
2018/08/13 PHP
表单(FORM)的一些实用效果代码
2007/03/25 Javascript
Jquery中增加参数与Json转换代码
2009/11/20 Javascript
document.createElement()用法及注意事项(ff下不兼容)
2013/03/13 Javascript
浏览器图片选择预览、旋转、批量上传的JS代码实现
2013/12/04 Javascript
js闭包所用的场合以及优缺点分析
2015/06/22 Javascript
基于Bootstrap3表格插件和分页插件实例详解
2016/05/17 Javascript
浅谈JavaScript 标准对象
2016/06/02 Javascript
JavaScript实现类似拉勾网的鼠标移入移出效果
2016/10/27 Javascript
vue.js利用Object.defineProperty实现双向绑定
2017/03/09 Javascript
详解Vue的computed(计算属性)使用实例之TodoList
2017/08/07 Javascript
JS简单实现数组去重的方法分析
2017/10/14 Javascript
Vue自定义多选组件使用详解
2020/09/08 Javascript
Python求两个文本文件以行为单位的交集、并集与差集的方法
2015/06/17 Python
Python的numpy库中将矩阵转换为列表等函数的方法
2018/04/04 Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
2018/04/20 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
2018/04/20 Python
Python requests发送post请求的一些疑点
2018/05/20 Python
python3实现随机数
2018/06/25 Python
Python基于OpenCV库Adaboost实现人脸识别功能详解
2018/08/25 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
2018/10/15 Python
python 检查是否为中文字符串的方法
2018/12/28 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
2019/01/29 Python
基于python全局设置id 自动化测试元素定位过程解析
2019/09/04 Python
python实现超市商品销售管理系统
2019/10/25 Python
python将数据插入数据库的代码分享
2020/08/16 Python
Python爬取豆瓣数据实现过程解析
2020/10/27 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
工程造价专业大学生职业规划范文
2014/03/09 职场文书
讲文明树新风演讲稿
2014/05/12 职场文书
国庆节活动总结
2014/08/26 职场文书
质量月活动总结
2014/08/26 职场文书
社区灵活就业证明
2014/11/03 职场文书
任长霞观后感
2015/06/16 职场文书
Python天气语音播报小助手
2021/09/25 Python