我有一个设计用于上传多个文本文件的表单,因此我已将 HTML 表单中的 mime 类型设置为
enctype="multipart/form-data"
我正在使用以下脚本
#!/usr/bin/env perl -wT
use strict;
use warnings;
use open qw(:std :encoding(UTF-8));
use CGI;
use CGI::Carp qw(fatalsToBrowser);
my $cgi = CGI->new();
但是,人们有可能会上传 gzip 文件。我想防范它,但是当我上传 gzip 文件时,只要在 httpd error_log 中创建了新的 CGI 对象并显示此错误消息,脚本就会崩溃。
...
test.cgi: utf8 "\\xA3" does not map to Unicode at (eval 16) line 5.
test.cgi: utf8 "\\xB5" does not map to Unicode at (eval 16) line 5.
test.cgi: Malformed multipart POST
我如何能够上传多个纯文本文件,并且在有人上传 gzip 文件时不死机?
最佳答案
:std
影响 STDIN、STDOUT 和 STDERR,STDIN 用于从 Web 服务器接收信息。
添加编码层后要么将其删除
use open qw( :std :encoding(UTF-8) );
BEGIN { binmode( STDIN ); }
或者避免首先添加它。
use open qw( :encoding(UTF-8) );
BEGIN {
binmode( STDIN );
binmode( STDOUT, ':encoding(UTF-8)' );
binmode( STDERR, ':encoding(UTF-8)' );
}
关于apache - 当文件被压缩时 Perl 上传失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73023422/