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

Laravel通过HTTP Client上传Base64文件失败,请求排查代码问题

Laravel对接第三方API上传Base64文件的代码问题分析

你的请求代码存在几个关键问题,导致文件上传失败并返回空响应:

1. 未设置正确的Content-Type请求头

你手动使用json_encode($content)构造请求体,但未在请求头中添加Content-Type: application/json。第三方API无法识别请求体格式,自然无法正确解析数据,导致处理失败。

2. fileData包含多余的Data URI前缀

你的fileData值带有data:application/pdf;base64,前缀,多数第三方API仅接收纯Base64编码字符串,不需要这个前缀。额外的前缀会导致API无法正确解码文件数据,最终上传失败。

3. 缺少错误处理逻辑

代码直接调用collect()->toArray(),如果请求返回4xx/5xx错误状态码,collect()会返回空集合,掩盖了实际的错误信息。你需要先检查响应状态,获取API返回的错误详情,才能定位问题。

4. 手动构造JSON请求体的写法不够稳妥

使用send方法时,直接传"body" => json_encode($content)容易出错,Laravel的Http客户端提供了更便捷的json选项,会自动处理JSON编码并设置正确的Content-Type头。


修复后的代码示例

$requestUrl = $this->baseUrl . $endpoint;

// 移除fileData的Data URI前缀,只保留纯Base64字符串
$fileBase64 = substr(
    'data:application/pdf;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg==',
    strpos('data:application/pdf;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg==', ',') + 1
);

$content = [
    'associatedType' => 'property',
    'associatedId' => 'XXXXXXX81',
    'typeId' => 'DET',
    'name' => '304-Smithson-Road-Details.pdf',
    "isPrivate" => false,
    'fileData' => $fileBase64
];

$response = Http::withHeaders([
    "api-version" => config("apiVersion"),
    "customer" => config("customer"),
    "Accept" => "application/json-patch+json",
    "Authorization" => "Bearer {$this->token}"
])->send($method, $requestUrl, [
    // 使用json选项代替手动编码body,自动处理Content-Type
    "json" => $content
]);

// 添加错误处理,获取详细错误信息
if ($response->failed()) {
    return $response->json() ?? $response->body();
}

return $response->collect()->toArray();

或者更简洁的写法,直接使用对应请求方法:

$response = Http::withHeaders([
    "api-version" => config("apiVersion"),
    "customer" => config("customer"),
    "Accept" => "application/json-patch+json",
    "Authorization" => "Bearer {$this->token}"
])->$method($requestUrl, $content);

内容的提问来源于stack exchange,提问作者Mr.Happy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:55:24