📜  Laravel 存储多个文件 - PHP (1)

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

Laravel 存储多个文件 - PHP

在使用 Laravel 开发应用程序时,经常会遇到需要存储多个文件的情况,例如用户上传多个图片或文档。本文将介绍如何使用 Laravel 存储多个文件的方法。

使用文件上传功能

在 Laravel 中,使用文件上传功能需要使用 Illuminate\Http\Request 类的 file 方法。该方法可以获取上传的文件,并允许你对这些文件进行各种操作。

首先,需要在你的表单中添加一个如下的文件上传字段:

<form action="/upload-files" method="POST" enctype="multipart/form-data">
    @csrf
    <input type="file" name="files[]" multiple>
    <button type="submit">上传文件</button>
</form>

注意 name 属性的值为 files[],这样可以确保接收到的是一个文件数组。

然后,在你的控制器中处理文件上传的请求:

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;

...

public function uploadFiles(Request $request)
{
    // 获取上传的文件
    $files = $request->file('files');

    // 检查是否有文件上传
    if ($request->hasFile('files')) {
        foreach ($files as $file) {
            // 保存文件到存储系统中,例如 public 或者 s3
            Storage::disk('public')->put($file->getClientOriginalName(), file_get_contents($file));
        }
    }

    return "文件上传成功!";
}

以上代码通过检查是否有上传的文件,并使用 Storage Facade 将文件保存到指定的存储系统中(例如 public 或者 s3)。

Markdown 格式

下面是上述内容的 Markdown 格式:

# Laravel 存储多个文件 - PHP

在使用 Laravel 开发应用程序时,经常会遇到需要存储多个文件的情况,例如用户上传多个图片或文档。本文将介绍如何使用 Laravel 存储多个文件的方法。

## 使用文件上传功能

在 Laravel 中,使用文件上传功能需要使用 `Illuminate\Http\Request` 类的 `file` 方法。该方法可以获取上传的文件,并允许你对这些文件进行各种操作。

首先,需要在你的表单中添加一个如下的文件上传字段:

```html
<form action="/upload-files" method="POST" enctype="multipart/form-data">
    @csrf
    <input type="file" name="files[]" multiple>
    <button type="submit">上传文件</button>
</form>

注意 name 属性的值为 files[],这样可以确保接收到的是一个文件数组。

然后,在你的控制器中处理文件上传的请求:

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;

...

public function uploadFiles(Request $request)
{
    // 获取上传的文件
    $files = $request->file('files');

    // 检查是否有文件上传
    if ($request->hasFile('files')) {
        foreach ($files as $file) {
            // 保存文件到存储系统中,例如 public 或者 s3
            Storage::disk('public')->put($file->getClientOriginalName(), file_get_contents($file));
        }
    }

    return "文件上传成功!";
}

以上代码通过检查是否有上传的文件,并使用 Storage Facade 将文件保存到指定的存储系统中(例如 public 或者 s3)。