Laravel文件与存储门面

时间:2016-03-06 15:24:15

标签: file laravel storage facade

laravel 5.2中FileStorage立面之间是否有任何差异? 它们似乎都使用相同的合同。我在laravel文档中看不到File的文档。 如果它们不同,那么它们之间可以相互影响吗?

2 个答案:

答案 0 :(得分:11)

File是一个非常简单的PHP函数包装器,例如file_exists()等。由于Frank de Jonge提供的精彩Flysystem PHP软件包,存储是“一个强大的文件系统抽象”。这可用于处理本地文件(即Storage::disk('local')->exists('path'))。

在Laravel 5之前,Laravel没有Flysystem集成。那时,File facade是与“本地文件”交互的“方式”。我猜想文件的文档被删除,以便让用户使用存储。文件系统确实可以工作。

答案 1 :(得分:0)

文件外观仅包含一些仅适用于绝对路径或相对于脚本的原始方法:

  • merge
  • \File::makeDirectory('/home/www/myProject/storage/app/uploads/14214');

存储外观包含一组复杂的方法,并且是其他第三方工具的包装。

第一个优点是,您可以使用文件夹的相对路径:

  • \File::copy('/home/www/myProject/storage/app/uploads/14214/test.json', '/home/www/myProject/storage/app/uploads/99999/test.json');
  • Storage::makeDirectory('uploads/14214');

您可以在Storage::copy('uploads/14214/test.json', 'uploads/99999/test.json');中更改默认文件夹/storage/app或创建其他可以用config/filesystems.php调用的磁盘。

您还可以将Storage::disk('specialxyz')->copy(...)保存到这样的文件中:

  • raw file contents

也是我的最爱,上传用户文件非常容易

Storage::put('file.jpg', $contents);

$path = Storage::putFile('avatars', $request->file('avatar')); 
  

默认情况下,store方法将生成一个唯一ID,以用作   文件名。文件扩展名将通过检查   文件的MIME类型。商店将返回文件的路径   方法,以便您可以存储路径,包括生成的文件名,   在您的数据库中。