在像CGI Perl这样的Mojolicious中上传文件,可以按照以下步骤操作:
lib/YourApp/Controller/YourController.pm
。under
关键字和POST
方法来设置路由。under '/upload' => sub {
my $self = shift;
# 添加文件上传限制
$self->req->max_message_size(1024 * 1024 * 10); # 限制文件大小为10MB
# 如果需要进行权限验证,可以在这里添加逻辑代码
return 1;
} => 'upload';
post '/upload' => sub {
my $self = shift;
# 通过$req对象获取上传的文件
my $file = $self->req->upload('file');
# 检查是否成功上传文件
unless ($file) {
$self->render(text => 'No file uploaded');
return;
}
# 获取文件信息
my $filename = $file->filename;
my $size = $file->size;
# 保存文件到指定目录
my $upload_dir = '/path/to/upload/dir';
$file->move_to("$upload_dir/$filename");
# 返回上传成功信息
$self->render(text => "File $filename uploaded successfully");
};
在上述代码中,under
关键字用于设置一个上传文件的路由,它可以用于添加权限验证或其他额外的逻辑。post
关键字用于指定一个处理上传文件的POST路由。通过$self->req->upload('file')
可以获取上传的文件对象。你可以根据需要进行文件大小、类型等的验证。$file->move_to
用于将文件移动到指定的目录中。
templates/your_template_name/upload.html.ep
文件中。<!DOCTYPE html>
<html>
<head><title>文件上传示例</title></head>
<body>
<h1>文件上传示例</h1>
<form method="POST" action="/upload" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
</body>
</html>
在上述代码中,enctype="multipart/form-data"
是必须的,用于指定表单的编码类型。
完成上述步骤后,你就可以在Mojolicious中实现文件上传功能了。用户可以通过访问/upload页面来上传文件,上传成功后会显示上传成功的信息。
对于文件上传功能的具体细节和更多配置,你可以参考Mojolicious官方文档:Mojolicious官方文档。
领取专属 10元无门槛券
手把手带您无忧上云