datei übergeben.....
red_or_dead
- cgi
0 PeterK
hallo leute,
ich habe folgendes problem:
ich habe ein formular in dem u.a. eine datei-upload-feld vorhanden ist. wird das formular abgeschickt, wird es von einem perl-skript ausgewertet und überprüft, ob die daten richtig eingegeben wurden. falls nicht, wird dem benutzer das formular nochmal angezeigt, wobei die formularfelder mittels 'value' bereits mit seinen letzten eingaben vordefiniert sind. dies funktioniert ja bekanntlich nicht bei dateifeldern. daher wollte ich die datei mittels 'hidden' mitschleifen. aber irgendwie funktionert das nicht. stattdessen werden mir die daten als zeichen angezeigt....
hat jemand eine idee, wie ich die datei trotzdem mitschleifen kann???
vielen dank schon mal...
gruss
philipp
Das Script speichert die Datei unter einem Temporär-Namen und nur der Pfad zur Temporären datei auf dem server wird per hidden weitergegeben.
Peter
ich lese die datei vorher aus mittels upload & übergebe dessen inhalt in das hidden-feld
hi Peter,
die Idee ist gut aber Ouh, wenn in der Zwischenzeit ein anderer Prozess kommt und glaubt, dort den richtigen Namen wiederzufinden hat er sich geiirt ;-)
Machs besser mit einem Cookie.
Rolf
Das Script speichert die Datei unter einem Temporär-Namen und nur der Pfad zur Temporären datei auf dem server wird per hidden weitergegeben.
Peter
hallo rolf,
kannst du das nochmal genauer erläutern? was soll ich ins coockie packen? den namen der temporären datei? wie komme ich an den namen?
gruss
philipp
Hallo,
was soll ich ins coockie packen? den namen der temporären datei?
zum Beispiel (wobei ich doch ein Hidden-Feld bevorzugen würde).
wie komme ich an den namen?
http://www.perldoc.com/perl5.6/lib/File/Temp.html
oder auch was selbstgestricktes beispielsweise mit http://www.perldoc.com/perl5.6/pod/func/rand.html.
Grüße
Klaus
hallo klaus,
vielen dank für die anregung. klingt super von der idee her, aber ich bekomme die umsetzung leider nicht hin.
also ich habe ein uploadfeld mit dem namen datei.
das lese ich im skript folgendermaßen aus:
$dateiname=$cgi->param ('datei')
wie bekomme ich jetzt die daten in eine temporäre datei???
$dateiname=$dateiname."XXXX"
$fh=tempfile ($dateiname);
klappt irgendwie nicht....
gruss
philipp
Halihallo red_or_dead
$dateiname=$cgi->param ('datei')
wie bekomme ich jetzt die daten in eine temporäre datei???
$cgi->param('datei') liefert dir im string-Kontext den Namen der Datei, im Handle-
Kontext ein Filehandle auf die Datei.
my $upfilehandler = $cgi->param('datei'); # sowohl Name, als auch Handle!
print "$upfilehandler"; # liefert Dateinamen
binmode($upfilehandler);
binmode($fh); # temporary file
while ( read( $upfilehandler, $data, 1024 ) ) {
print $fh $data;
}
$fh=tempfile ($dateiname);
klappt irgendwie nicht....
Was?
Viele Grüsse
Philipp