Laravel Storage::get 在创建符号 link 后无法访问
Laravel Storage::get unable to access after symbolic link created
以下 uploads/moves 文件在 5.5 中正确 -- 能够从目录中 see/access -- 但 Storage::get 没有 return 文件路径,甚至与一个符号 link 创建,直接访问文件给出 404。
$currentuser_id = Auth::user()->id;
$file = request()->file('resume');
$fileName = $file->getClientOriginalName();
Storage::disk('uploads')->put($currentuser_id.'/'.$fileName, file_get_contents($file));
尝试访问文件,$content 为空:
$content = Storage::disk('uploads')->get($currentuser_id.'/filename.pdf');
访问文件直接产生404:
https://www.website.com/storage/uploads/1/filename.pdf
文件系统配置:
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
'uploads' => [
'driver' => 'local',
'root' => storage_path().'/uploads',
],
],
您可以使用UploadedFile
提供的处理存储盘的方法来简化代码。
$file = request()->file('resume');
$file->storeAs(Auth::id(), $file->getClientOriginalName(), 'uploads');
Laravel 5.5 Docs - Requests - Storing Uploaded Files
storage/app/public
可能已链接,但 storage/uploads
未链接到 public 文件夹中,因此没有可访问的地址来获取文件。
以下 uploads/moves 文件在 5.5 中正确 -- 能够从目录中 see/access -- 但 Storage::get 没有 return 文件路径,甚至与一个符号 link 创建,直接访问文件给出 404。
$currentuser_id = Auth::user()->id;
$file = request()->file('resume');
$fileName = $file->getClientOriginalName();
Storage::disk('uploads')->put($currentuser_id.'/'.$fileName, file_get_contents($file));
尝试访问文件,$content 为空:
$content = Storage::disk('uploads')->get($currentuser_id.'/filename.pdf');
访问文件直接产生404:
https://www.website.com/storage/uploads/1/filename.pdf
文件系统配置:
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
'uploads' => [
'driver' => 'local',
'root' => storage_path().'/uploads',
],
],
您可以使用UploadedFile
提供的处理存储盘的方法来简化代码。
$file = request()->file('resume');
$file->storeAs(Auth::id(), $file->getClientOriginalName(), 'uploads');
Laravel 5.5 Docs - Requests - Storing Uploaded Files
storage/app/public
可能已链接,但 storage/uploads
未链接到 public 文件夹中,因此没有可访问的地址来获取文件。