Thread Perl-Skript Portierung: IIS5 -> IIS6 (11 answers)
Opened by Gast at 2008-09-18 19:00

Gast Gast
 2008-09-19 19:58
#114798 #114798
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;
                        }

View full thread Perl-Skript Portierung: IIS5 -> IIS6