- 论坛徽章:
- 0
|
CGI中如何才能避免在文件没上传成功前产生CGItemp*****文件?
希望下面这个对你有用
############### 处理表单
sub MANAGE_URL_LENGTH{
my (@pairs,$pair,$name,$line,$value,$boundary,$buffer,$real_file,@column,$dump);
if($ENV{'QUERY_STRING'}) {
@pairs = split(/&/,$ENV{'QUERY_STRING'});
foreach $pair (@pairs) {
($name, $value) = split(/=/,$pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
$FORM{$name} = $value;
}
}else{
binmode STDIN;
read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});
($boundary=$ENV{'CONTENT_TYPE'}) =~ s/^.*boundary=(.*)$/$1/;
@pairs=split(/--$boundary/, $buffer);
for $pair (@pairs) {
($dump,$line,$value) = split(/\r\n/,$pair,3);
if($line =~ /filename/) {
$real_file = $line;
}
next if $line =~ /filename=\"\"/;
$line =~ s/^Content-Disposition: form-data; //;
(@column) = split(/;\s+/, $line);
($name = $column[0]) =~ s/^name="([^"]+)"$/$1/g;
if($#column >; 0) {
($dump,$dump,$value) = split(/\r\n/,$value,3);
}else {
($dump,$value) = split(/\r\n/,$value,2);
next if $value =~ /^\s*$/;
$FORM{$name} = $value;
chop($FORM{$name});
chop($FORM{$name});
next;
}
$FORM{$name} = $value;
}
}
##return %FORM;
}##FILEDATA |
|