Datei-Upload via Browser mit Perl

Hallo!

Wie kann ich eine Datei via Browser mit Perl hochladen?

Ich habe mir dazu die Duku von perldoc CGI angesehen, komme aber damit nicht weiter, da ich noch Anfänger bin. Ich habe ein Formular erstellt, in dem ca. 10 Felder sind, 2 dieser Felder sollen für den Upload verwendet werden. Wenn nich nun als type „file“ einsetze, bekomme ich beim Absenden lediglich den Pfad auf dem Client angezeigt. In welcher Variablen ist die Datei abgelegt?

Könntet Ihr mir vielleicht ein kleines Bespiel schicken, in dem nur die Übergabe programmiert ist, wie die Datei entgegengenommen werden muß.

Vielen Dank

Michael

Wenn nich nun
als type „file“ einsetze, bekomme ich beim Absenden lediglich
den Pfad auf dem Client angezeigt. In welcher Variablen ist
die Datei abgelegt?

ich denke mal du benutzt das CGI-Paket.
die datei wird vom webserver temp. gespeichert. was du vom query-objekt bekommst ist, imho, ein Filehandle.

Beispiel:

$file = $query->param(„name_des_file_Feldes_im_Formular“) #filehandle holen
$outfile=„uploads/dateiname.dat“; # name der ausgabedatei
open OUTF, „> $outfile“ or die $!; #datei zum schreiben öffnen
binmode($file);binmode(OUTF); #binärer Modus (wichtig für win/unix-kompatibilität)
while ($c=sysread($file,$sys,1024,0)) { print OUTF $sys; } #schreiben
close OUTF;
close $file;

Hallo!

Irgendwie klappt das nich. Ich bekomme immer einen Error 500. Mein Programm sieht dabei so aus:

------------neue_db.pl-------------------
#!/usr/bin/perl

$body1 = ‚body_1.txt‘;
$body2 = ‚body_2.txt‘;

use CGI qw(:standard);

$file = $query->param(„db“) #filehandle holen
$outfile=„dateiname.dat“; # name der ausgabedatei
open OUTF, „> $outfile“ or die $!; #datei zum schreiben öffnen
binmode($file);binmode(OUTF); #binärer Modus (wichtig für win/unix-kompatibilität)
while ($c=sysread($file,$sys,1024,0)) { print OUTF $sys; } #schreiben
close OUTF;
close $file;

&ausgabe_a;
print „OK!!!“;
print "

";
&ausgabe_b;
exit;

############## S U B S ##############

sub ausgabe_a{
open (TXT,"./$body1") || &endIt;
flock (TXT,2); seek (TXT,0,0);
@Message_Text = ;
close (TXT);
$Body = „@Message_Text“;

print („Content-type: text/html\n\n“);
print „$Body“;
} #end sub ausgabe

sub ausgabe_b{
open (TXT,"./$body2") || &endIt;
flock (TXT,2); seek (TXT,0,0);
@Message_Text = ;
close (TXT);
$Body = „@Message_Text“;
print „$Body“;

} #end sub ausgabe_sel

sub endIt {
exit;
}

----------------ENDE---------------

Woran kann das liegen?

Vielen Dank,

michael

das muß auf jeden Fall rein:


use CGI;
$query=new CGI;
$file = $query->param(„db“); #filehandle holen

Danke Markus,

ich bekomme jetzt auch keine Fehlermeldung mehr, aber die Datei wird leider auch nicht mit Inhalt gefüllt. Was kann ich denn sonst noch probieren? Ich versuche soetwas schon länger, aber ich weiss einfach nicht mehr weiter.

Michael