Laravel 文件上传

2025年3月17日 | 阅读 3 分钟

在本主题中,我们将看到如何上传文件。

让我们通过一个例子来理解。

  • 首先,我们使用以下命令在 laravel 5.8 中创建项目

composer create-project laravel/laravel=5.8 form -prefer-dist;

Laravel File Upload
  • 现在,我们创建一个名为“Form”的模型。
Laravel File Upload
  • 打开迁移文件 (create_forms_table)。

以上代码创建一个名为“forms”的表,其中包含四个列 (id、path、created_at、updated_at)。

  • 使用以下命令将上述更改迁移到数据库中
Laravel File Upload
  • 我们创建一个名为“FormController”的控制器。
Laravel File Upload
  • 现在我们创建一个名为 form.blade.php 的视图页面。

form.blade.php

将文件存储在数据库中

在本节中,我们将在 store() 函数中定义保存文件到数据库的代码。

FormController.php

在上面的代码中,我们定义了 store() 函数,在该函数中我们将文件存储在 $name 变量中,然后将文件移动到 images 文件夹。我们移动到 images 文件夹的文件通过语句 $data->save() 保存到数据库中。

  • 现在,我们定义一个路由。

输出

Laravel File Upload

当我们点击 Choose File(选择文件) 按钮时,我们需要选择要上传的文件。假设我选择了名为“img.png”的文件,如下图所示

Laravel File Upload

在上面的截图中,我选择了文件 (img.png),然后我们点击 Upload(上传) 按钮。单击 Upload(上传) 按钮后,文件将被保存到数据库中,如下图所示

Laravel File Upload

从数据库中检索数据

在本节中,我们将看到如何从数据库中检索数据。

  • 首先,我们将在 FormController 类中定义 index() 函数。

FormController.php

  • 在此步骤中,我们添加 <img> 标签。

index.blade.php

在上面的代码中,“./images/{{$form->path}}”定义了图像的路径,即图像存储在 images 文件夹中。

  • 现在,我们将定义显示图像的路由。

Route::get('/show','FormController@index');

输出

Laravel File Upload
Laravel File Upload

在上述情况下,我们使用静态方式通过将路径传递给 src 属性来显示图像。我们也可以在 <img> 标签中不传递文件夹的名称 (images) 的情况下显示图像,这可以通过在 Form 模型中定义 getPathAttribute() 函数来实现。

Form.php

index.blade.php

输出

Laravel File Upload
下一个主题Laravel Sessions