在Perl中限制CGI文件上传中的文件类型,可以通过检查上传文件的扩展名来实现。以下是一个简单的示例,演示如何在Perl中限制CGI文件上传中的文件类型:
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
my $cgi = CGI->new;
my $upload_dir = "/path/to/upload/dir";
my $file = $cgi->param('upload');
my $filename = $file->filename();
my $filesize = $file->size();
# 允许的文件类型
my %allowed_types = (
'txt' => 1,
'jpg' => 1,
'png' => 1,
'pdf' => 1
);
# 检查文件扩展名是否允许
my ($ext) = $filename =~ /(\.[^.]+)$/;
if (!exists $allowed_types{$ext}) {
print $cgi->header('text/html');
print "Error: 不允许的文件类型。";
exit;
}
# 保存上传的文件
my $upload_file = "$upload_dir/$filename";
open(my $fh, '>', $upload_file) or die "Error: 无法打开文件 $upload_file 进行写入。";
binmode $fh;
print $fh $file->content();
close($fh);
print $cgi->header('text/html');
print "文件 $filename 上传成功。";
在这个示例中,我们首先创建了一个哈希表 %allowed_types
,其中列出了允许上传的文件类型。然后,我们检查上传文件的扩展名是否在允许的类型中。如果不在允许的类型中,则输出错误消息。如果文件类型允许,则将文件保存到指定的目录中。
请注意,这个示例仅仅是一个简单的示例,实际应用中可能需要更复杂的验证和安全措施。
领取专属 10元无门槛券
手把手带您无忧上云