PHP传输base64数据不完整的解决方法

 更新时间:2024年05月29日 10:02:16   作者:德宏大魔王  
最近在做OCR增值税务处理时,接口是通过图片转base64提交处理然后返回数据的,通过在线工具进行测试,发现传递过去的数据可以使用,接收到的数据却提示损坏,所以本文给大家介绍了PHP传输base64数据不完整的解决方法,需要的朋友可以参考下

前言

最近在做OCR增值税务处理时,接口是通过图片转base64提交处理然后返回数据的,我通过前端将图片转换为base64提交到后端接收时,通过在线工具进行测试,发现传递过去的数据可以使用,接收到的数据却提示损坏

解决办法

<?php
header('Content-Type: text/html; charset=utf-8');
header('Access-Control-Allow-Origin: *'); // 允许任何网址请求
header('Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE'); // 允许请求的类型
header('Access-Control-Allow-Credentials: true'); // 设置是否允许发送 cookies
header('Access-Control-Allow-Headers: Content-Type, Content-Length, Accept-Encoding, X-Requested-with, Origin'); // 设置允许自定义请求头的字段


// 接收POST数据

$base64=$_POST['base'];

替换为以下代码:

<?php
header('Content-Type: text/html; charset=utf-8');
header('Access-Control-Allow-Origin: *'); // 允许任何网址请求
header('Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE'); // 允许请求的类型
header('Access-Control-Allow-Credentials: true'); // 设置是否允许发送 cookies
header('Access-Control-Allow-Headers: Content-Type, Content-Length, Accept-Encoding, X-Requested-with, Origin'); // 设置允许自定义请求头的字段


// 接收POST数据
$postData = file_get_contents('php://input');
$base64=urldecode($postData);
$new_base64 = substr($base64, 27); 

即可解决

拓展知识

BASE64解码后的图片显示不完整问题

BASE64解码后的图片显示不完整

从前端获取base64信息就后用以下代码进行处理,发现解析出来的图片会损坏。

StringBuffer filePathStr=new StringBuffer();
			for(int i=0;i<fileList.size();i++){
				JSONObject fileObj = fileList.getJSONObject(i);
				if(null!=fileObj){
					String fileContent=fileObj.getString("FileContent");
					String fileName=fileObj.getString("FileName");
					//Base64解码  
					byte[] bytes=Base64.decodeBase64(fileContent);
					  for (int j = 0; j < bytes.length; ++j) {  
					        if (bytes[j] < 0) {// 调整异常数据  
					        	bytes[j] += 256;  
					        }  
					  }

导致损坏可能为以下原因

一:需要去掉如下头部信息。

二:

因为ajax在传输过程中加号会变成空格而base64里是有加号的,所以在ajax传输前先要对base64进行编码,把加号替换成%2B的url编码。
var img = imageData.replace(/+/g,"%2B");
imageData就是原始的base64码

以上就是PHP传输base64数据不完整的解决方法的详细内容,更多关于PHP base64数据不完整的资料请关注脚本之家其它相关文章!

相关文章

  • PHP获取文件夹内文件数的方法

    PHP获取文件夹内文件数的方法

    这篇文章主要介绍了PHP获取文件夹内文件数的方法,涉及php操作文件夹及文件的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • PHP中iconv函数知识汇总

    PHP中iconv函数知识汇总

    iconv函数库能够完成各种字符集间的转换,是php编程中不可缺少的基础函数库。本文内容是参考了网上的其他资源,然后结合自己的实践,有需要的小伙伴可以参考下。
    2015-07-07
  • PHP实现的文件上传类与用法详解

    PHP实现的文件上传类与用法详解

    这篇文章主要介绍了PHP实现的文件上传类与用法,结合实例形式较为详细的分析了PHP文件上传类的定义与具体使用方法,需要的朋友可以参考下
    2017-07-07
  • PHP安全之register_globals的on和off的区别

    PHP安全之register_globals的on和off的区别

    这篇文章主要介绍了PHP安全之register_globals的on和off的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • js基于qrcode.js生成二维码的方法【附demo插件源码下载】

    js基于qrcode.js生成二维码的方法【附demo插件源码下载】

    这篇文章主要介绍了js基于qrcode.js生成二维码的方法,结合实例形式分析了基于qrcode.js文件生成二维码的具体实现技巧,需要的朋友可以参考下
    2016-12-12
  • PHP实现二维数组去重功能示例

    PHP实现二维数组去重功能示例

    这篇文章主要介绍了PHP实现二维数组去重功能,涉及php针对数组的遍历、判断、设置等相关操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2017-01-01
  • PHP面向对象程序设计实例分析

    PHP面向对象程序设计实例分析

    这篇文章主要介绍了PHP面向对象程序设计的方法,结合实例形式分析了PHP面向对象程序设计中类的声明与实例化及类中方法的调用技巧,需要的朋友可以参考下
    2016-01-01
  • php将从数据库中获得的数据转换成json格式并输出的方法

    php将从数据库中获得的数据转换成json格式并输出的方法

    今天小编就为大家分享一篇php将从数据库中获得的数据转换成json格式并输出的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • PHP 多维数组排序(usort,uasort)

    PHP 多维数组排序(usort,uasort)

    当我们想对多维数组进行排序时,多维数组的每个元素又是一数组类型,而两个数组如何比较大小?这是需要用户自定义的(是按每个数组的第一元素比较还是…)。
    2010-06-06
  • php获取URL中带#号等特殊符号参数的解决方法

    php获取URL中带#号等特殊符号参数的解决方法

    这篇文章主要介绍了php获取URL中带#号等特殊符号参数的解决方法,本文使用JS中的escape函数编码后传递解决这个问题,需要的朋友可以参考下
    2014-09-09

最新评论