自动摘要
正在生成中……
在 Laravel 中,Storage 门面提供了一种强大且方便的方法来与文件系统进行交互。以下是如何使用它的基本步骤:
- 首先,确保在你的控制器头部使用了
Storage 门面:
use Illuminate\Support\Facades\Storage;
- 创建文件:
你可以使用 put 方法将一个文件放入存储盘上. put 方法接受文件的路径和文件的内容作为参数:
Storage::disk('local')->put('example.txt', 'Contents');
- 读取文件:
要读取一个文件的原始内容,可以使用 get 方法,并且将文件的路径作为参数:
$contents = Storage::get('example.txt');
- 删除文件:
delete 方法可用于删除文件:
Storage::delete('example.txt');
记住,所有文件操作都是相对于你在 config/filesystems.php 文件中配置的特定磁盘的。
以上都是在使用 ‘local’ 磁盘,也就是在 storage/app 目录。如果你想使用其他磁盘,你可以使用 disk 方法在 put、get 和 delete 前调用。例如,如果你想使用 public 磁盘,你可以这样操作:
Storage::disk('public')->put('example.txt', 'Contents');
示例:如下代码会把文件存储到哪里?
if ($user->cover_path) {
Storage::disk('public')->delete($user->cover_path);
}
$path = $cover->store('user-' . $user->id, 'public');
$user->update(['cover_path' => $path]);
$success = 'Your cover image was updated';
在你的代码中,当你使用Storage::disk('public')时,你会得到一个驱动器实例,这个驱动器关联到你在config/filesystems.php文件中定义为"public"的磁盘。文件会被存储在这个磁盘指定的位置。
这个'public'磁盘是使用public驱动器的一个默认设置,它定义在config/filesystems.php定义文件中。默认情况下,public磁盘的root是你的public/storage目录,这个目录是通过artisan命令
php artisan storage:link
创建的符号链接到storage/app/public。
所以,在你的示例代码中,$cover->store('user-' . $user->id, 'public');会把$cover 存储到storage/app/public/user-{userid}/文件夹,{userid}是当前用户的id。
$path变量将包含文件在public磁盘的路径,像是user-{userid}/filename.extension,这个路径存储在你的用户模型的cover_path属性中。
然后,你可以使用asset或者Storage::url来获取这个文件的url。
如果你需要改变默认的存储路径,你需要在filesystems.php中找到'public'磁盘并修改它的root属性。