Я понимаю необходимость очистки входных данных из HTML-формы, но когда я очистил поле загрузки файла в моем недавнем модуле, загрузка файла стала неудачной. Важно очистить все входные данные, верно? Даже специальное поле загрузки файла?
Мой код вывода формы выглядит примерно так:
use CGI;
my $cgi = new CGI;
print $cgi->header();
# ... print some HTML here
print $cgi->start_form();
print $cgi->filefield(-name=>'uploaded_file',
-size=>50,
-maxlength=>80);
print $cgi->submit(-name=>'continue',
-value=>'Continue');
print $cgi->end_form();
# ... print some more HTML here
И мой код очистки выглядит примерно так (на самом деле раньше в том же модуле, что и выше):
use HTML::Entities
my $OK_CHARS => 'a-zA-Z0-9 .,-_';
foreach my $param_name ( $cgi->param() ) {
my $original_content = $cgi->param($param_name);
my $replaced_content = HTML::Entities::decode( $original_content );
$replaced_content =~ s/[^$OK_CHARS]//go;
$cgi->param( $param_name, $replaced_content );
}
Когда я недавно добавил код очистки, загрузка файла стала невозможной. Файловый дескриптор теперь возвращает неопределенное значение в этой строке:
my $uploadedFilehandle = $cgi->upload('uploaded_file');
Так я что-то не так сделал в коде очистки? Я получил этот фрагмент кода из Интернета где-то, поэтому я не совсем все понимаю. Я никогда раньше не видел модификатора регулярных выражений 'o' и никогда раньше не использовал модуль HTML :: Entities.