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

Laravel 11+Backblaze B2(S3兼容):PUT请求报错“不支持x-amz-checksum-crc32头”

解决Laravel原生S3驱动对接Backblaze B2时的校验头错误

问题根源是Laravel底层依赖的AWS SDK默认会自动添加x-amz-checksum-crc32校验头,但Backblaze B2的S3兼容API不支持该请求头,导致上传报错。以下是两种不依赖第三方库的解决方式:

全局配置(推荐)

直接在config/filesystems.php的B2磁盘配置中添加options参数,禁用自动校验头:

'disks' => [
    'b2' => [
        'driver' => 's3',
        'key'    => env('B2_KEY'),
        'secret' => env('B2_SECRET'),
        'region' => env('B2_REGION', 'auto'),
        'bucket' => env('B2_BUCKET'),
        'endpoint' => 'https://s3.ca-east-006.backblazeb2.com',
        'use_path_style_endpoint' => true,
        // 添加配置禁用自动校验算法
        'options' => ['ChecksumAlgorithm' => null],
    ],
],

若项目开启了配置缓存,修改后执行以下命令刷新缓存:

php artisan config:cache

单请求配置

如果仅需针对特定上传请求禁用校验头,可在put方法的第三个参数中指定选项:

Storage::disk('b2')->put('some-path/file.png', $fileContent, [
    'ChecksumAlgorithm' => null
]);

两种方式均可阻止AWS SDK自动发送x-amz-checksum-crc32头,适配Backblaze B2的S3兼容API。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 04:37:02