📜  从视图 laravel 6 访问存储 - PHP (1)

📅  最后修改于: 2023-12-03 15:22:02.441000             🧑  作者: Mango

从视图 Laravel 6 访问存储 - PHP

在 Laravel 6 中,我们可以使用存储(Storage)来管理所有的文件系统操作。不仅是本地文件系统,Storage 还支持诸如 S3 等云存储的文件系统。

本文将介绍如何在 Laravel 6 的视图中访问存储的文件,并提供实际示例及代码。

准备工作

在我们开始之前,需要对 Laravel 存储模块进行配置。常见的配置方法是在 .env 文件中设置存储驱动程序和其它选项。

打开 .env 文件,查找以下行:

FILESYSTEM_DRIVER=local

默认情况下,Laravel 使用 "local" 作为默认存储驱动程序。如果您需要使用其它的驱动程序,比如 Amazon S3,可以设置 FILESYSTEM_DRIVER 环境变量为所需的驱动程序。

/config/filesystems.php 文件中,也可以配置您的存储驱动程序及其它选项。例如,下面的配置使用 S3 驱动程序:

's3' => [
    'driver' => 's3',
    'key' => env('AWS_KEY'),
    'secret' => env('AWS_SECRET'),
    'region' => env('AWS_REGION'),
    'bucket' => env('AWS_BUCKET'),
],
在视图中访问存储

让我们从本地文件系统中获取文件开始,假设存在文件路径 /storage/app/public/example.jpg,需要在视图中显示该图片,我们可以使用以下代码:

<!-- Markdown Code: -->

![Example Image](/storage/app/public/example.jpg)

Markdown 渲染后,将直接显示图片。但是,在使用上述代码之前,我们需要确保 Laravel 正确地配置了存储路径。例如,如果我们使用 S3,该路径则需更换为 S3 上的实际路径。

如果需要使用动态的路径,可以在控制器中定义一个变量,在视图中进行替换。例如,定义变量 $path,内容为路径 /storage/app/public/example.jpg

public function index()
{
    $path = '/storage/app/public/example.jpg';

    return view('example')->with('path', $path);
}

在视图中,将变量 $path 替换为以下代码即可:

<!-- Markdown Code: -->

![Example Image]({{$path}})

这样就可以在视图中动态地显示文件了。

存储常用操作

除了访问文件,存储还支持其他常见的操作,例如将文件上传到服务器,从服务器中删除文件等。

上传文件

如果需要上传文件,可以使用 store 方法:

public function store(Request $request)
{
    $path = $request->file('file')->store('public');

    return response()->json([
        'path' => $path
    ]);
}

在上述示例中,我们通过 $request->file('file') 获取上传的文件,使用 store 方法将文件保存到 public 存储区域(例如在 Laravel 中执行 php artisan storage:link 时,将生成链接到 public/storage 目录的链接)。

使用这种方式生成的文件路径,可以在视图中显示文件时使用。

删除文件

如果需要删除文件,可以使用 Storage 的 delete 方法:

Storage::delete('public/example.jpg');

在上述示例中,我们删除了路径为 storage/app/public/example.jpg 的文件。当然,实际的文件路径也可能不同,根据实际情况进行更改即可。

总结

本文介绍了在 Laravel 6 中访问存储的方法,包括在视图中显示文件、打开并读取文件内容、上传文件和删除文件。通过这些技巧,可以更好地使用 Laravel 的存储模块,处理和管理文件。