×

Laravel Storage用法

2024-01-04 13:42:20 Falcon

在 Laravel 中,Storage 门面提供了一种强大且方便的方法来与文件系统进行交互。以下是如何使用它的基本步骤:

  1. 首先,确保在你的控制器头部使用了 Storage 门面:
use Illuminate\Support\Facades\Storage;
  1. 创建文件:

你可以使用 put 方法将一个文件放入存储盘上. put 方法接受文件的路径和文件的内容作为参数:

Storage::disk('local')->put('example.txt', 'Contents');
  1. 读取文件:

要读取一个文件的原始内容,可以使用 get 方法,并且将文件的路径作为参数:

$contents = Storage::get('example.txt');
  1. 删除文件:

delete 方法可用于删除文件:

Storage::delete('example.txt');

记住,所有文件操作都是相对于你在 config/filesystems.php 文件中配置的特定磁盘的。

以上都是在使用 ‘local’ 磁盘,也就是在 storage/app 目录。如果你想使用其他磁盘,你可以使用 disk 方法在 putgetdelete 前调用。例如,如果你想使用 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属性。

本文收录于