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
上上传仍然会出现相同的错误。
答案 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()
但是,如果所有存储操作都使用一个磁盘,则最好将其指定为默认磁盘。