jQuery实现文件编码成base64并通过AJAX上传的方法

 更新时间:2018年04月12日 14:29:14   作者:jumtre  
这篇文章主要介绍了jQuery实现文件编码成base64并通过AJAX上传的方法,涉及jQuery前台使用FileReader对象编码base64文件进行ajax上传及后台php处理相关操作技巧,需要的朋友可以参考下

本文实例讲述了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:

FileReader - Web API Interfaces | MDN

PS:这里再推荐几款加密解密相关在线工具供大家参考使用:

线编码转换工具(utf-8/utf-32/Punycode/Base64):
http://tools.jb51.net/transcoding/decode_encode_tool

BASE64编码解码工具:
http://tools.jb51.net/transcoding/base64

图片转换为Base64编码在线工具:
http://tools.jb51.net/transcoding/img2base64

在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha

更多关于jQuery相关内容感兴趣的读者可查看本站专题:《jquery中Ajax用法总结》、《jQuery常用插件及用法总结》、《jQuery扩展技巧总结》、《jQuery常见经典特效汇总》及《jquery选择器用法总结

希望本文所述对大家jQuery程序设计有所帮助。

相关文章

  • jQuery动态添加<input type=

    jQuery动态添加<input type="file">

    有时候需要在页面上允许用户上传多个文件,个数由用户自己决定,个数多了也可以删除,使用jQuery可以很简单的实现这个功能
    2016-04-04
  • JQuery动态生成的按钮无法触发问题及完美解决方法

    JQuery动态生成的按钮无法触发问题及完美解决方法

    利用JQuery动态添加的按钮无法通过$(selector).click方法触发点击事件,下面小编给大家带来了JQuery动态生成的按钮无法触发问题与解决方法,需要的朋友可以参考下
    2023-02-02
  • jquery实现可关闭的倒计时广告特效代码

    jquery实现可关闭的倒计时广告特效代码

    这篇文章主要介绍了jquery实现可关闭的倒计时广告特效代码,涉及jquery计时器及鼠标事件动态操作页面元素样式的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • jQuery实现带动画效果的二级下拉导航方法

    jQuery实现带动画效果的二级下拉导航方法

    这篇文章主要介绍了jQuery实现带动画效果的二级下拉导航方法,涉及jQuery操作css样式及鼠标事件的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • 浅谈jQuery绑定事件会叠加的解决方法和心得总结

    浅谈jQuery绑定事件会叠加的解决方法和心得总结

    下面小编就为大家带来一篇浅谈jQuery绑定事件会叠加的解决方法和心得总结。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • 关于Jqzoom的使用心得 jquery放大镜效果插件

    关于Jqzoom的使用心得 jquery放大镜效果插件

    Jqzoom是基于jquery的放大镜效果插件,兼容多款浏览器,喜欢的朋友可以测试下。
    2010-04-04
  • jquery动态赋值id与动态取id方法示例

    jquery动态赋值id与动态取id方法示例

    这篇文章主要给大家介绍了关于jquery动态赋值id与动态取id的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
    2017-08-08
  • 影响jQuery使用的14个方面

    影响jQuery使用的14个方面

    jQuery的插件提供了一个很好的方法,节省了时间和简化了开发,避免程序员从头开始编写每个组件。但是,插件也将一个不稳定因素引入代码中。一个好的插件节省了无数的开发时间,一个质量不好的插件会导致修复错误的时间比实际从头 开始编写组件的时间还长。
    2014-09-09
  • jQuery模拟新浪微博首页滚动效果的方法

    jQuery模拟新浪微博首页滚动效果的方法

    这篇文章主要介绍了jQuery模拟新浪微博首页滚动效果的方法,实例分析了jQuery使用animate、css等方法实现滚动特效的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • 基于JQuery和原生JavaScript实现网页定位导航特效

    基于JQuery和原生JavaScript实现网页定位导航特效

    本文通过实例代码给大家介绍了基于JQuery和原生JavaScript实现网页定位导航特效,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-04-04

最新评论