Thread Upload-Skript erzeugt nur leere Datei (5 answers)
Opened by MechaTikal at 2007-10-29 12:07

MechaTikal
 2007-10-29 12:07
#101526 #101526
User since
2007-10-10
20 Artikel
BenutzerIn
[default_avatar]
Webprogrammierung ist so gar nicht meine Sache. Trotzdem hab ich die Aufgabe, eine kleine Seite zu basteln, mit der Dateien auf einen FTP hochgeladen werden können.
Testweise habe ich (nach mehreren erfolglosen Versuchen) mit proFTPD einen FTP-Server lokal aufgesetzt, eine Seite mit Dateiauswahlmöglichkeit erstellt und versucht, eben diese zu übertragen. Aber ich scheine wohl das ganze Prinzip noch nicht recht verstanden zu haben. Es kommt zwar der Dateiname an, aber die Zieldatei bleibt leer.

Hier mal der Code (Verbindung zum FTP und Laden der Module hab ich mal weggelassen):

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
my $newfilename = $q->param('filename');
my $file_given = $q->upload('uploaded_file');
starting_page();
#my $ftp = connect_to_ftp();

my $action    = $q->param('action') || "none";
print "aktion = $action datei $file_given";

if ($action eq "none") {
    #starting_page();
} elsif ($action =~ /Upload/i) {
    if ($file_given) {
        upload_file(
                #$q->upload('uploaded_file'),
                $file_given,
                $newfilename,
                );
    } else {
        print "Bitte eine Datei zum Hochladen auswählen!";
        }
}

Anzeige der Seite und Parameterabfrage.

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
print $q->start_form(
                        -method=>'post',
                        -enctype=>'&CGI::MULTIPART',

                        );
    print $q->filefield(
                        -name=>'uploaded_file',
                        -size=>'30',
                        -maxlength=>'80',
        
                );
    print $q->br;
    print $q->textfield(
                        -name=>'filename',
                        -size=>50,
                        -maxlength=>80
                        );

    print $q->br;
    print $q->submit (
              -name=>'action',
              -value=>'Upload',
              -class=>'submit',
              );  

    print "</form>";
    print $q->end_form;

Die eigentliche Seite mit Dateiauswahl, Eingabe eines neuen Dateinamens und Submit-Button.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
sub upload_file {
my ($file, $newfilename) = @_;
print "Datei: $file neuer Name: $newfilename";
print $q->br;
while (<$file>) {

    print; #Testausgabe des Dateiinhalts
}
my $ftp = connect_to_ftp();
$ftp->put($file, $newfilename) or print "Could not upload files: $!";
$ftp->quit;
$action = "none";
}


Ist das $ftp->put jetzt hier generell falsch oder warum erhält er die komplette Datei nicht? Er zeigt mir ja den Inhalt an, aber lässt die Zieldatei immer leer...

View full thread Upload-Skript erzeugt nur leere Datei