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

Laravel上传文件至DigitalOcean Spaces遇Endpoints格式错误求助

解决Laravel上传DigitalOcean Spaces时的"Endpoints must be full URIs and include a scheme and host"错误

这个报错我之前帮朋友排查过,核心问题就是你的config/filesystems.php里的DigitalOcean Spaces配置不完整,尤其是endpoint必须是带协议(https://)的完整域名。咱们一步步来修复:

1. 补全config/filesystems.php中的完整配置

你目前的配置只写了一部分,需要补充endpoint、region、bucket等关键参数,完整的do_spaces配置应该是这样的:

'do_spaces' => [
    'driver' => 's3',
    'key' => env('DO_SPACES_KEY'),
    'secret' => env('DO_SPACES_SECRET'),
    'endpoint' => env('DO_SPACES_ENDPOINT'), // 必须是完整URI
    'region' => env('DO_SPACES_REGION'),
    'bucket' => env('DO_SPACES_BUCKET'),
    'url' => env('DO_SPACES_URL'), // 可选,用于生成公共访问链接
    'visibility' => 'public', // 如果需要公共访问的话设置这个
],

2. 在.env文件中配置正确的环境变量

注意DO_SPACES_ENDPOINT必须是带https://的完整地址,比如你的空间在纽约区域,endpoint就是https://nyc3.digitaloceanspaces.com,示例如下:

DO_SPACES_KEY=你的DigitalOcean Spaces访问密钥
DO_SPACES_SECRET=你的DigitalOcean Spaces密钥密码
DO_SPACES_ENDPOINT=https://nyc3.digitaloceanspaces.com # 替换成你的空间所在区域的endpoint
DO_SPACES_REGION=nyc3 # 对应区域代码
DO_SPACES_BUCKET=你的空间名称
DO_SPACES_URL=https://你的空间名称.nyc3.digitaloceanspaces.com # 可选,公共访问地址

3. 清除配置缓存并测试

配置完成后,先清除Laravel的配置缓存,避免旧配置干扰:

php artisan config:clear

然后可以用一段简单的代码测试上传,比如在控制器里:

use Illuminate\Support\Facades\Storage;

public function testUpload()
{
    $file = request()->file('your_file_input');
    if ($file) {
        $path = Storage::disk('do_spaces')->put('uploads', $file);
        dd('上传成功,路径:' . $path);
    }
    dd('请选择文件');
}

额外排查点

  • 确认你的DigitalOcean Spaces密钥拥有正确的权限(至少有写入权限)
  • 如果你用的是较新版本的Laravel,确保league/flysystem-aws-s3-v3包已经安装(Laravel通常默认包含,但如果缺失可以运行composer require league/flysystem-aws-s3-v3)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:20:06