在Laravel上传照片

时间:2019-02-17 17:27:07

标签: laravel

Laravel文件上传会在尝试上传图像时给用户错误

Get error: local.ERROR: Driver [] is not supported.

如何解决其问题?

public function channelAvatar(Request $request, Channel $channel)
{
    // validate
    $this->validate($request, [
        'photo' => ['required', 'image', Rule::dimensions()->minWidth(250)->minHeight(250)->ratio(1 / 1)],
    ]);

    // fill variables
    $filename = time() . str_random(16) . '.png';
    $image = Image::make($request->file('photo')->getRealPath());
    $folder = 'channels/avatars';

    // crop it
    $image = $image->resize(250, 250);

    // optimize it
    $image->encode('png', 60);

    // upload it
    Storage::put($folder.'/'.$filename, $image->__toString());
    $imageAddress = $this->webAddress() . $folder . '/' . $filename;

    // delete the old avatar
    Storage::delete('channels/avatars/' . str_after($channel->avatar, 'channels/avatars/'));

    // update channel's avatar
    $channel->update([
        'avatar' => $imageAddress,
    ]);
    $this->putChannelInTheCache($channel);

    return $imageAddress;
}

在本地或FTP上上传仍然会出现相同的错误。

1 个答案:

答案 0 :(得分:1)

无论何时使用不带特定磁盘的存储选项,Laravel都会使用默认驱动程序。似乎您已将local指定为默认驱动程序,但尚未配置它。

根据您的config/filesystem.php,您有:

'ftp' => [ 
    'driver' => 'ftp', 
    'host' => env('FTP_HOST', 'test.something.net'), 
    'username' => env('FTP_USERNAME', 'someusername'), 
    'password' => env('FTP_PASSWORD', '*******'), 
],

因此,您需要将其指定为默认驱动程序。您可以添加:

FILESYSTEM_DRIVER=ftp文件中的

.env

然后在config / filesystem.php中添加以下内容:

'default' => env('FILESYSTEM_DRIVER', 'local'),

现在,每当您执行Storage::something()时,它将使用默认驱动程序。 (某些情况下,您将local作为默认值`

如果您愿意,也可以指定它:

Storage::disk('ftp')->something()但是,如果所有存储操作都使用一个磁盘,则最好将其指定为默认磁盘。