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

如何用PHP的GuzzleHttp将Base64字符串转Blob并上传至REST API

使用GuzzleHttp将Base64字符串转为文件格式上传

要实现这个需求,核心是把Base64字符串解码为二进制数据,再通过Guzzle的multipart请求选项模拟FormData提交,具体步骤如下:

步骤1:处理Base64字符串

首先剥离Base64字符串的data:[mime-type];base64,前缀(如果有的话),再解码为二进制数据:

// 示例Base64字符串(带前缀)
$base64String = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==';

// 剥离前缀(如果存在)
if (strpos($base64String, 'base64,') !== false) {
    $base64String = substr($base64String, strpos($base64String, 'base64,') + 7);
}

// 解码为二进制数据
$binaryData = base64_decode($base64String);

步骤2:用GuzzleHttp构造上传请求

使用Guzzle的multipart选项来构建FormData,将二进制数据作为文件参数传递:

use GuzzleHttp\Client;

$client = new Client();

try {
    $response = $client->request('POST', 'https://目标API端点地址', [
        'multipart' => [
            [
                'name'     => 'file', // API要求的文件字段名
                'filename' => 'uploaded-file.png', // 自定义文件名,需匹配实际文件类型
                'contents' => $binaryData, // 解码后的二进制数据
                'headers'  => [
                    'Content-Type' => 'image/png' // 文件对应的MIME类型
                ]
            ],
            // 如果需要其他表单字段,可在此添加
            // [
            //     'name' => 'other_field',
            //     'contents' => 'field_value'
            // ]
        ]
    ]);

    // 处理响应
    $statusCode = $response->getStatusCode();
    $responseBody = $response->getBody()->getContents();
    echo "上传成功,状态码:{$statusCode}\n响应内容:{$responseBody}";
} catch (\GuzzleHttp\Exception\RequestException $e) {
    // 捕获请求异常
    echo "请求失败:" . $e->getMessage();
    if ($e->hasResponse()) {
        echo "响应内容:" . $e->getResponse()->getBody()->getContents();
    }
}

关键说明

  • multipart数组中的每个元素对应FormData中的一个项,文件项必须包含name(字段名)、filename(文件名)、contents(二进制内容)。
  • Content-Type需要根据实际文件类型设置(比如图片是image/png,文档是application/pdf等),如果不确定可以通过Base64前缀提取,或者设置为application/octet-stream通用二进制类型。
  • 若目标API不需要文件名,可省略filename字段,但多数接受Blob的API会期望这个参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 20:00:00