• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

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

    发布者: 天下网吧 | 发布时间: 2025-6-17 13:18| 查看数: 60| 评论数: 0|帖子模式

    前言

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

    解决办法

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


    7. // 接收POST数据

    8. $base64=$_POST['base'];
    复制代码
    替换为以下代码:
    1. <?php
    2. header('Content-Type: text/html; charset=utf-8');
    3. header('Access-Control-Allow-Origin: *'); // 允许任何网址请求
    4. header('Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE'); // 允许请求的类型
    5. header('Access-Control-Allow-Credentials: true'); // 设置是否允许发送 cookies
    6. header('Access-Control-Allow-Headers: Content-Type, Content-Length, Accept-Encoding, X-Requested-with, Origin'); // 设置允许自定义请求头的字段


    7. // 接收POST数据
    8. $postData = file_get_contents('php://input');
    9. $base64=urldecode($postData);
    10. $new_base64 = substr($base64, 27);
    复制代码
    即可解决

    拓展知识

    BASE64解码后的图片显示不完整问题
    BASE64解码后的图片显示不完整
    从前端获取base64信息就后用以下代码进行处理,发现解析出来的图片会损坏。
    1. StringBuffer filePathStr=new StringBuffer();
    2.                         for(int i=0;i<fileList.size();i++){
    3.                                 JSONObject fileObj = fileList.getJSONObject(i);
    4.                                 if(null!=fileObj){
    5.                                         String fileContent=fileObj.getString("FileContent");
    6.                                         String fileName=fileObj.getString("FileName");
    7.                                         //Base64解码  
    8.                                         byte[] bytes=Base64.decodeBase64(fileContent);
    9.                                           for (int j = 0; j < bytes.length; ++j) {  
    10.                                                 if (bytes[j] < 0) {// 调整异常数据  
    11.                                                         bytes[j] += 256;  
    12.                                                 }  
    13.                                           }
    复制代码

    导致损坏可能为以下原因
    一:需要去掉如下头部信息。

    二:
    因为ajax在传输过程中加号会变成空格而base64里是有加号的,所以在ajax传输前先要对base64进行编码,把加号替换成%2B的url编码。
    var img = imageData.replace(/+/g,"%2B");
    imageData就是原始的base64码
    以上就是PHP传输base64数据不完整的解决方法的详细内容,更多关于PHP base64数据不完整的资料请关注脚本之家其它相关文章!

    来源:https://www.jb51.net/program/3218781nr.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表