在 Laravel 中,你可以使用请求(Request)实例提供的方法来处理上传的文件并将其保存到服务器上。以下是一个简单的例子:
首先,确保你的 HTML 表单包含了 enctype="multipart/form-data"
属性,以便正确上传文件:
<form method="POST" action="/upload" enctype="multipart/form-data">
@csrf
<input type="file" name="file">
<button type="submit">Upload</button>
</form>
然后,在你的 Laravel 控制器中,你可以使用 store
方法来保存上传的文件。这里是一个控制器方法的例子:
use Illuminate\Http\Request;
public function upload(Request $request)
{
if ($request->hasFile('file')) {
$file = $request->file('file');
// 保存文件到默认的存储磁盘,并生成一个唯一的 ID 作为文件名
$path = $file->store('uploads', 'public');
return 'File has been uploaded successfully to ' . $path;
}
return 'No file was uploaded.';
}
确保你的 routes/web.php
文件中有指向这个控制器方法的路由:
Route::post('/upload', [YourController::class, 'upload']);
这段代码会将用户上传的文件保存到 storage/app/public/uploads
目录,并返回文件的相对路径。记得使用 php artisan storage:link
命令创建 public/storage
到 storage/app/public
的符号链接。
如果你想要自定义文件名或者路径,你可以传递额外的参数给 storeAs
方法:
$path = $request->file('file')->storeAs('uploads', 'custom_name.'.$file->extension(), 'public');
这将会保存文件到 uploads
目录,并使用定制的文件名 custom_name
加上原始文件的扩展名。