端点必须是完整的URI,并包括方案和主机,Digitalocean Spaces和Laravel

时间:2018-03-22 11:09:45

标签: laravel api digital-ocean

我正在尝试使用Laravel文件系统将文件上传到Digitalocean Spaces。我在youtube上看了一个教程,但是我一直从Laravel那里得到一个错误,说“端点必须是完整的URI并包含一个方案和主机”。

这是我遵循的教程: https://www.youtube.com/watch?v=vFwy-vB_d_k&t=776s

任何帮助都将不胜感激。

在config / filesystems.config中我添加了这个

        'do_spaces' => [
        'driver' => 's3',
        'key' => env('DO_SPACES_KEY'),
        'secret' => env('DO_SPACES_SECRET'),
        'region' => env('DO_SPACES_REGION'),
        'bucket' => env('DO_SPACES_BUCKET'),
        'endpoint' => env('DO_SPACES_ENDPOINT'),
    ],

在我的.env文件中

DO_SPACES_KEY= secret
DO_SPACES_SECRET= secret
DO_SPACES_REGION=nyc3
DO_SPACES_BUCKET= afghanjamtest
DO_SPACES_ENDPOINT= https://nyc3.digitaloceanspaces.com

这是我的控制器代码

    $input=$request->all();
    $songs=array();
    if($files=$request->file('files')){
        foreach($files as $file){
            $name=$file->getClientOriginalName();

            $path = Storage::disk('do_spaces')->putFileAs('uploads', $file, $name);

            // $file->move('songs',$name);
            $songs[]=$name;

        }
    }

    return redirect('/show');
}

2 个答案:

答案 0 :(得分:1)

更改您的环境变量:

DO_SPACES_KEY='secret'
DO_SPACES_SECRET='secret'
DO_SPACES_REGION='nyc3'
DO_SPACES_BUCKET='afghanjamtest'
DO_SPACES_ENDPOINT='https://nyc3.digitaloceanspaces.com'

Whitout空格在'或'之间,因为有时秘密包含一个char#,并且在env文件中是一个特殊的char。

答案 1 :(得分:0)

配置很好,但您需要从配置中删除缓存。

  1. 如果正在运行则关闭服务器(因为您还需要重新启动服务器才能使更改生效)

  2. php artisan clear:data

  3. php artisan cache:clear

  4. 现在再次运行服务器,并希望它能够正常工作。