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;  
					        }  
					  }

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

导致损坏可能为以下原因

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

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

二:

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

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

原创文章,作者:RWLXD,如若转载,请注明出处:https://www.wangzhanshi.com/n/667.html

(0)
RWLXD的头像RWLXD
上一篇 2024年12月17日 17:53:10
下一篇 2024年12月17日 17:53:12

相关推荐

  • php7如何安装stomp扩展

    本文操作环境:linux5.9.8系统、stomp2.0.1版、Dell G3电脑。 php7怎么安装stomp扩展? php7编译安装stomp扩展 1.下载stomp扩展包 #…

    2025年1月1日
  • PHP7中的伪随机数产生器CSPRNG怎么用

    CSPRNG 即伪随机数产生器,作为一个工具,常用的算法有 MD5 或者 SHA1 等。 在 PHP7 中,引入了以下两个 CSPRNG 函数,通过跨平台方式生成加密安全的整数和字…

    php 2025年1月1日
  • ​nginx PHP常见错误有哪些

    nginx PHP常见错误 1、php7.0-fpm.sock权限不足: [crit] 3182#3182: *20 connect() to unix:/run/php/php7…

    php 2025年1月1日
  • php7能在phpcms使用吗

    PHPCMS是一款网站管理软件。该软件采用模块化开发,支持多种分类方式,使用它可方便实现个性化网站的设计、开发与维护。 它支持众多的程序组合,可轻松实现网站平台迁移,并可广泛满足各…

    php 2025年1月1日
  • 怎么解决php7插入数据时出现乱码

    怎么解决php7插入数据时出现乱码?其实要解决这个问题也不难,下面我们一起来看看php7插入数据时出现乱码的解决方法吧! php7 向mysql数据库插入数据乱码的原因是因为编码的…

    php 2025年1月1日
  • PHP7新特性之抽象语法树AST带来的变化有哪些

    新的执行过程 PHP7 的内核中有一个重要的变化是加入了 AST。在 PHP5中,从 php 脚本到 opcodes 的执行的过程是: Lexing:词法扫描分析,将源文件转换成 …

    php 2025年1月1日
  • PHP7与PHP5的区别是什么

    PHP7距正式发布以及有挺长时间了,刚出道就号称比旧版本快了几倍,各种开源框架或系统运行在PHP7上速度效率提高了几倍。那么php7和php5之间的区别是什么?下面本篇文章就来给大…

    php 2025年1月1日
  • 如何在win10系统中安装PHP7环境

    单站点配置 打开%Apache24%\conf\httpd.conf文件: 1、 找到“ServerRoot”,将其指定为%Apache24%所在目录; 2、 修改文档根目录; D…

    php 2025年1月1日
  • PHP如何优化冗余代码

    在编程中,代码的冗余是一个常见的问题,不仅增加了代码的复杂性,还降低了可读性和可维护性。对于PHP这样的语言来说,减少代码冗余同样重要,尤其是当项目规模变得越来越大时。本文将探讨如…

    php 2024年12月17日
  • php7中的curl文件上传出现错误怎么解决

    最近在项目跟微信公众号的素材库对接接口,采用curl的post方式提交素材文件,发现一直提示 {“errcode”:41005,”errmsg”:”media data missi…

    php 2025年1月1日

发表回复

登录后才能评论