laravel 5.2中File
和Storage
立面之间是否有任何差异?
它们似乎都使用相同的合同。我在laravel文档中看不到File
的文档。
如果它们不同,那么它们之间可以相互影响吗?
答案 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类型。商店将返回文件的路径 方法,以便您可以存储路径,包括生成的文件名, 在您的数据库中。