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

如何将Cloudflare Stream的CURL命令转为Laravel的Guzzle HTTP代码?

将Cloudflare Stream视频上传的CURL命令转换为Laravel Guzzle代码

原CURL命令解析

原命令通过Cloudflare邮箱+API Key认证,以multipart/form-data格式上传本地视频,表单字段名为file:

curl -X POST "https://api.cloudflare.com/client/v4/accounts/023e105f4ecef8ad9ca31a8372d0c353/stream" \
     -H "X-Auth-Email: user@example.com" \
     -H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" \
     --form 'file=@/Users/kyle/Desktop/skiing.mp4'

你的Guzzle代码存在的问题

  1. 认证方式错误:原CURL用的是Cloudflare专属的邮箱+API Key认证,而非Bearer Token;
  2. Content-Type头错误:手动设置application/json会导致multipart文件上传失败,Guzzle会自动处理该请求的头部;
  3. 表单字段配置错误:重复设置name键(语法无效)、字段名应为file而非upload、文件名设置不合理;
  4. 配置项拼写错误:acountId应为accountId。

修正后的Guzzle代码

假设$file是Laravel的Illuminate\Http\UploadedFile实例:

$authEmail = config('services.cloudflare.email');
$authKey = config('services.cloudflare.key');
$accountId = config('services.cloudflare.accountId');

$client = new \GuzzleHttp\Client();

try {
    $response = $client->request('POST', "https://api.cloudflare.com/client/v4/accounts/{$accountId}/stream", [
        'headers' => [
            'X-Auth-Email' => $authEmail,
            'X-Auth-Key' => $authKey,
        ],
        'multipart' => [
            [
                'name'     => 'file',
                'filename' => $file->getClientOriginalName(),
                'contents' => fopen($file->getRealPath(), 'r'),
            ],
        ],
    ]);

    // 解析并输出响应
    $result = json_decode($response->getBody(), true);
    dd($result);
} catch (\GuzzleHttp\Exception\RequestException $e) {
    // 捕获错误便于调试
    dd($e->getResponse()->getBody()->getContents());
}

关键修正说明

  • 替换为Cloudflare要求的认证头,确保配置文件中对应字段正确;
  • 移除错误的Content-Type设置,让Guzzle自动处理multipart请求头部;
  • 统一表单字段名为file,使用用户上传的原始文件名,以只读模式打开文件资源;
  • 添加异常捕获,方便排查上传过程中的问题;
  • 修正配置项拼写错误。

内容的提问来源于stack exchange,提问作者Mehmet Küçükçelebi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:45:46