Laravel 5.4 多文件上传
在现代 Web 应用程序中,文件上传是一个非常常见的任务。Laravel 5.4 提供了一个简单而强大的方式来处理多文件上传。在这篇文章中,我们将讨论如何使用 Laravel 5.4 处理多文件上传。
1. 创建一个表单
我们需要创建一个表单来上传文件。在 HTML 中,我们可以使用 input 标签的 type 属性设置为 file 来创建文件上传表单。
```html
```请注意,我们将 input 标签的 name 属性设置为 files[],这是因为我们将允许用户上传多个文件。我们还将 enctype 属性设置为 multipart/form-data,这是因为我们将上传二进制数据。
2. 处理上传的文件
一旦用户上传了文件,我们需要在服务器端处理它们。在 Laravel 5.4 中,我们可以使用 Request 对象来处理上传的文件。
```php public function upload(Request $request) { $files = $request->file('files'); foreach ($files as $file) { $filename = $file->getClientOriginalName(); $file->move(storage_path('uploads'), $filename); } return redirect()->back(); } ```
在上面的代码中,我们首先使用 $request->file('files') 方法获取上传的文件数组。然后,我们使用 foreach 循环遍历每个文件,并使用 getClientOriginalName() 方法获取文件名。我们使用 move() 方法将文件移动到指定的目录中。
请注意,我们将文件移动到 storage_path('uploads') 目录中。这是因为在 Laravel 5.4 中,所有上传的文件都应该存储在 storage/app 目录中。如果您没有创建 storage/app/uploads 目录,请使用以下命令创建它:
```bash mkdir -p storage/app/uploads ```
3. 显示上传的文件
一旦文件上传成功,我们需要在视图中显示它们。在 Laravel 5.4 中,我们可以使用 Storage facade 来访问上传的文件。
```php public function show() { $files = Storage::files('uploads'); return view('show', compact('files')); } ```
在上面的代码中,我们使用 Storage::files('uploads') 方法获取存储在 uploads 目录中的所有文件。然后,我们将文件数组传递给视图。
在视图中,我们可以使用 foreach 循环遍历每个文件,并使用 Storage::url() 方法生成文件的 URL。
```html @foreach ($files as $file) @endforeach ```
在上面的代码中,我们使用 Storage::url() 方法生成文件的 URL。请注意,我们将文件名作为 alt 属性的值。
结论
在本文中,我们讨论了如何使用 Laravel 5.4 处理多文件上传。我们创建了一个表单来上传文件,并使用 Request 对象处理上传的文件。我们使用 Storage facade 来访问上传的文件,并在视图中显示它们。