Thread Problem mit File Upload (29 answers)
Opened by Gast at 2007-12-06 12:20

GwenDragon
 2007-12-06 13:43
#103501 #103501
User since
2005-01-17
14609 Artikel
Admin1
[Homepage]
user image
1) Du schließt doch die temporäre Datei.

Ist tmpFileName() nicht eine undokumentierte (interne) Methode?
Eigentlich sollte eineR nur offizielle Methoden benutzen.

Warum lässt du denn die temporäre Uploaddatei nicht auf und kopierst sie dann um und schließt dann die temporäre Uploaddatei?

Weißt du was ich meine? ;)

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
if(-d $session_dir){ 
        my $query = new CGI;
        my $file_name = $query->param("filename");
        $file_name = (split(/[\/\\]/,$file_name))[-1];
        my $upload_file_path = $upload_dir.$file_name;
        my $upload_filehandle = $query->upload("filename");

        print 'Moving File to Upload Directory -> ';
        my ($tmpfh2, $buffer);
        if ( open($tmpfh2, '>', $upload_file_path ) ) { 
                flock($tmpfh2, LOCK_EX);
                while (my $bytesread = read($upload_filehandle, $buffer, 1024)) {
                        print $tmpfh2 $buffer;
                }
                if( close($upload_filehandle) and close($tmpfh2) {
                        print $query->b({-style=>'color:green'}, "Success"), $query->br();       
                } else { 
                        print $query->b({-style=>'color:red'}, "Failure"),$query->br();
                }
        } else { 
            print $query->b({-style=>'color:red'}, "Failure"),$query->br();
        }
    }


2) Beim Erzeugen des Dateinamens verwendest du nur / und \ als Trenner. Was ist mit Macs? Die haben nämlich einen anderen Trenner.


3) Du solltest bei deinen Parameter pfad und filename überprüfen, ob das zusammengesetzte Konstrukt nicht Zeichen enthält, wo böswillge Leute auch Dateien außerhalb DOCUMENT_ROOT überschreiben können!

3) Du solltest eigentlich auch testen, ob die hochzuladene Datei schon vorhanden ist, damit unerlaubt oder aus Versehen nichts wichtiges gelöscht wird.

4) Ein paar mehr Meldungen an STDERR oder eine eigene Logdatei, warum was nicht geklappt hat wäre auch nützlich.

Viel Erfolg beim Verbessern und Erweitern.

View full thread Problem mit File Upload