open DBG, ">$path" . "debug.log" if $debug; binmode DBG; print DBG "content_length:$ENV{CONTENT_LENGTH}\n" if $debug; if( $Buffer =~ /^-----------------------------\d{10,20}/ ) { print DBG $Buffer if $debug; print DBG "Blockid.:$&\n" if $debug; $CountLines = 1; @Blocks = split( /$&/, $Buffer ); undef $Buffer; $Buffer="ANSI2ASCII" ; foreach $Block (@Blocks) { # print DBG "Blocknr.:" . ++$BlockNr . "\n" if $debug; @Lines = split( /\015\012/, $Block ); shift @Lines; foreach $Line (@Lines) { # print DBG "Linenr.:" . ++$LineNr . "\n" if $debug; if( $Line =~ /.*Content-Disposition: .*name="([^"]+)"; filename="(.*)"/ ) { $Fieldname = &Ansii2Ascii( $1 ); $Filename = &Ansii2Ascii( $2 ); $Filename =~ s/.*\\([^\\]+)$/$1/; $Filename =~ s/\.(...).*$/\.$1/; # print DBG "File.:$Filename\n" if $debug; if ( $Filename ) { $filenr = $filenr + 1; ($ext=$Filename)=~s/.*\.(.*)/\.$1/ if $Filename=~/\..+/; $NewFilename = "f".$filenr.$last.$ext; } else { $NewFilename = ""; } $Buffer .= "&_org$Fieldname=$Filename" if $Filename; $Buffer .= "&$Fieldname=$NewFilename"; last if ! ($Block =~ s/[\s\S]*Content-Type:[^\n]*\n//); chop $Block; chop $Block; open FILEOUT, ">$path$NewFilename"; binmode FILEOUT; print FILEOUT substr( $Block, $EmptyLines * 2 ); close FILEOUT; last; } elsif( $Line =~ /Content-Disposition: form-data; name="(.+)"/ ) { $name = $1; $Buffer .= "&" . &Ansii2Ascii( $1 ) . "="; $FldEmptyLines = 0; # print DBG "Varname:$1\n" if $debug; }