Thread Perl-Skript Portierung: IIS5 -> IIS6
(11 answers)
Opened by Gast at 2008-09-18 19:00
Teil 2/3:
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 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; } |