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获取table下某一行某一列的值实现代码
Apr 07 jQuery
jquery 禁止鼠标右键并监听右键事件
Apr 27 jQuery
jQuery Json数据格式排版高亮插件json-viewer.js使用方法详解
Jun 12 jQuery
webpack写jquery插件的环境配置
Dec 21 jQuery
jQuery封装animate.css的实例
Jan 04 jQuery
jQuery实现的下雪动画效果示例【附源码下载】
Feb 02 jQuery
菊花转动的jquery加载动画效果
Aug 19 jQuery
jquery 动态遍历select 赋值的实例
Sep 12 jQuery
jquery层次选择器的介绍
Jan 18 jQuery
解决jquery validate 验证不通过后验证正确的信息仍残留在label上的方法
Aug 27 jQuery
jQuery实现飞机大战小游戏
Jul 05 jQuery
html中两种获取标签内的值的方法
Jun 16 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利用REFERER根居访问来地址进行页面跳转
2013/09/28 PHP
php阿拉伯数字转中文人民币大写
2015/12/21 PHP
yii框架无限极分类的实现方法
2017/04/08 PHP
PHP基于递归实现的约瑟夫环算法示例
2017/08/27 PHP
IE php关于强制下载文件的代码
2008/08/23 Javascript
改进UCHOME的记录发布,增强可访问性用户体验
2011/01/17 Javascript
javascript 按键事件(兼容各浏览器)
2013/12/20 Javascript
javascript 动态创建表格
2015/01/08 Javascript
跟我学习javascript解决异步编程异常方案
2015/11/23 Javascript
利用jsonp跨域调用百度js实现搜索框智能提示
2016/08/24 Javascript
利用jQuery对无序列表排序的简单方法
2016/10/16 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
详解angularjs中如何实现控制器和指令之间交互
2017/05/31 Javascript
Vue Cli与BootStrap结合实现表格分页功能
2017/08/18 Javascript
Nodejs 和Session 原理及实战技巧小结
2017/08/25 NodeJs
微信小程序实现自定义动画弹框/提示框的方法实例
2020/11/06 Javascript
JavaScript实现简单动态表格
2020/12/02 Javascript
[00:10]DOTA2 TI9勇士令状明日上线
2019/05/07 DOTA
[42:00]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第一场 12.13
2020/12/17 DOTA
Django返回json数据用法示例
2016/09/18 Python
python的random模块及加权随机算法的python实现方法
2017/01/04 Python
Python实现的特征提取操作示例
2018/12/03 Python
Pandas操作CSV文件的读写实现方法
2019/11/13 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
python实现猜单词游戏
2020/05/22 Python
python报错: 'list' object has no attribute 'shape'的解决
2020/07/15 Python
python中用Scrapy实现定时爬虫的实例讲解
2021/01/18 Python
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
Nuts.com:优质散装,批发坚果、干果和巧克力等
2017/03/21 全球购物
blueseventy官网:铁人三项和比赛泳衣
2021/02/06 全球购物
银行工作检查书范文
2014/01/31 职场文书
2014年助理政工师工作总结
2014/12/19 职场文书
企业培训简报范文
2015/07/20 职场文书
go select编译期的优化处理逻辑使用场景分析
2021/06/28 Golang
python自动化操作之动态验证码、滑动验证码的降噪和识别
2021/08/30 Python
宫崎骏十大动画电影,宫崎骏好看的动画电影排名
2022/03/22 日漫