You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

API返回Base64图片无法显示的PHP代码修复求助

修复方案及代码示例

核心问题分析

你遇到的Trying to get property 'base64' of non-object错误,本质是API响应未被正确解析为对象,或者解析后不存在base64字段。可能的原因包括:curl请求拿到了非预期的响应内容、JSON解析失败、API返回的是数组结构而非对象。

以下是完整的修复代码及分步说明:


第一步:确保curl请求获取完整、纯净的响应

先排除curl返回多余内容(如HTTP头部、错误信息)的问题:

<?php
// 替换为你的API地址
$apiUrl = 'https://your-api-endpoint.com/get-image';

// 初始化curl并配置关键选项
$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 仅返回响应体,不直接输出
curl_setopt($ch, CURLOPT_HEADER, false); // 不包含HTTP头部
// 若API需要认证/自定义头,在此添加
// curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer xxx']);

// 执行请求并捕获错误
$response = curl_exec($ch);
if (curl_errno($ch)) {
    die('curl请求失败: ' . curl_error($ch));
}
curl_close($ch);

// 调试用:打印原始响应,确认是否为合法JSON(确认后可注释)
// var_dump($response);

第二步:正确解析JSON并验证字段

强制指定解析为对象,并检查解析结果和字段存在性:

// 解析JSON为对象(第二个参数为false,确保返回对象而非数组)
$responseData = json_decode($response);

// 检查JSON解析是否成功
if ($responseData === null) {
    die('JSON解析失败: ' . json_last_error_msg());
}

// 确认API响应包含base64字段
if (!isset($responseData->base64)) {
    die('API响应中未找到base64字段');
}

$base64Image = $responseData->base64;

第三步:直接输出图片到浏览器

处理可能的base64前缀,并输出正确的图片内容:

// 移除base64前缀(部分API会返回类似data:image/png;base64,的前缀)
if (strpos($base64Image, 'data:image/') === 0) {
    $base64Image = preg_replace('#^data:image/[^;]+;base64,#', '', $base64Image);
}

// 设置图片类型的响应头(根据实际图片类型调整为image/jpeg、image/gif等)
header('Content-Type: image/png');
// 解码并输出图片
echo base64_decode($base64Image);

额外排查点

  1. 如果JSON解析失败,尝试用trim($response)去除响应前后的空白字符(如BOM头、换行)后再解析。
  2. 若API返回的是关联数组结构(而非对象),将$responseData->base64改为$responseData['base64']即可。
  3. 验证API返回的base64字符串是否完整,可以将其复制到在线base64图片解码器测试。

内容的提问来源于stack exchange,提问作者Ravi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 18:33:19