在 Laravel 中实现文件上传相对简单,因为它已经内置了对文件上传的支持。下面是一些基本步骤来实现文件上传:
首先,你需要创建一个 HTML 表单,允许用户选择要上传的文件。表单应该使用 POST 方法,并包含 enctype="multipart/form-data" 属性,以便正确传输文件数据。
<form action="/upload" method="POST" enctype="multipart/form-data">
@csrf
<input type="file" name="file">
<button type="submit">上传文件</button>
</form>
在 routes/web.php 文件中,添加一个路由来处理文件上传请求。
Route::post('/upload', 'FileUploadController@store');
使用以下命令创建一个名为 FileUploadController 的控制器:
php artisan make:controller FileUploadController
在 FileUploadController 中,添加一个名为 store 的方法来处理文件上传。
use Illuminate\Http\Request;
public function store(Request $request)
{
// 验证文件是否存在
$request->validate([
'file' => 'required|file',
]);
// 获取文件实例
$file = $request->file('file');
// 获取文件扩展名
$extension = $file->getClientOriginalExtension();
// 生成唯一的文件名
$filename = time() . '.' . $extension;
// 将文件移动到指定目录
$destinationPath = public_path('/uploads');
$file->move($destinationPath, $filename);
// 返回成功消息
return back()->with('success', '文件上传成功!');
}
在项目的根目录下,创建一个名为 uploads 的目录,并设置适当的权限,以便 Web 服务器可以写入文件。
mkdir uploads
chmod -R 755 uploads
现在,当用户通过表单上传文件时,文件将被保存到 uploads 目录,并生成一个唯一的文件名。你可以根据需要自定义文件名和存储位置。