在处理上传请求之前,如何在Perl中获取文件大小?

Luc*_*uci 3 perl upload cgi filesize

我想获取文件大小我正在这样做:

my $filename=$query->param("upload_file");
my $filesize = (-s $filename);
print "Size: $filesize ";`
Run Code Online (Sandbox Code Playgroud)

但它没有用.请注意,我没有上传文件.我想在上传之前检查它的大小.所以将其限制为最大1 MB.

fri*_*edo 5

在上传之前,您无法知道某些内容的大小.但您可以检查Content-Length浏览器发送的请求标头(如果有).然后,您可以决定是否要相信它.请注意,这Content-Length将是整个请求流的长度,包括其他表单字段,而不仅仅是文件上载本身.但这足以让你成为一致的客户.

由于您似乎在纯CGI下运行,因此您应该能够获得请求体长$ENV{CONTENT_LENGTH}.