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插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
Mar 23 jQuery
jQuery UI Grid 模态框中的表格实例代码
Apr 01 jQuery
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
May 08 jQuery
jQuery插件FusionCharts绘制的2D条状图效果【附demo源码】
May 13 jQuery
jquery DataTable实现前后台动态分页
Jun 17 jQuery
jQuery选择器之表单元素选择器详解
Sep 19 jQuery
jQuery实现checkbox的简单操作
Nov 18 jQuery
jquery.pagination.js分页使用教程
Oct 23 jQuery
jQuery事件blur()方法的使用实例讲解
Mar 30 jQuery
jQuery操作元素追加内容示例
Jan 10 jQuery
js、jquery实现列表模糊搜索功能过程解析
Mar 27 jQuery
基于jquery实现彩色投票进度条代码解析
Aug 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同时支持GIF、png、JPEG
2006/10/09 PHP
PHP 函数语法介绍一
2009/06/14 PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
2016/06/24 PHP
php微信公众平台开发之微信群发信息
2016/09/13 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
PHP队列场景以及实现代码实例详解
2021/02/26 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2021/03/09 PHP
jQuery+PHP实现可编辑表格字段内容并实时保存
2015/10/09 Javascript
jQuery遮罩层实现方法实例详解(附遮罩层插件)
2015/12/08 Javascript
谷歌Chrome浏览器扩展程序开发小记
2016/01/06 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
2016/11/30 Javascript
详解Angular的数据显示优化处理
2016/12/26 Javascript
详谈jQuery中使用attr(), prop(), val()获取value的异同
2017/04/25 jQuery
原生JS实现日历组件的示例代码
2017/09/22 Javascript
JavaScript数据结构之栈实例用法
2019/01/18 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
2019/09/21 Javascript
解决vue-cli输入命令vue ui没效果的问题
2020/11/17 Javascript
利用Anaconda简单安装scrapy框架的方法
2018/06/13 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
2019/04/25 Python
centos7之Python3.74安装教程
2019/08/15 Python
python实现贪吃蛇双人大战
2020/04/18 Python
浅谈Python3多线程之间的执行顺序问题
2020/05/02 Python
如何使用Python处理HDF格式数据及可视化问题
2020/06/24 Python
HTML+CSS+JavaScript实现图片3D展览的示例代码
2020/10/12 HTML / CSS
德国在线购买葡萄酒网站:Geile Weine
2019/09/24 全球购物
师范生自荐信范文
2013/10/06 职场文书
3.12植树节活动总结2014
2014/03/13 职场文书
歌颂祖国的演讲稿
2014/05/04 职场文书
安全标兵事迹材料
2014/08/17 职场文书
幼儿园小班个人工作总结
2015/02/12 职场文书
纪委立案决定书
2015/06/24 职场文书
查看nginx配置文件路径和资源文件路径的方法
2021/03/31 Servers
Python集合的基础操作
2021/11/01 Python
MySql统计函数COUNT的具体使用详解
2022/08/14 MySQL
Win10本地连接不见了怎么恢复? win10系统电脑本地连接不见了解决方法
2023/01/09 数码科技