Fileupload mit cgi-lib.pl
Dominique Nüssli
Hallo
Rolf Rost hat ja schön beschrieben wie der Dateiupload via cgi-lib.pl funktioniert (http://www.teamone.de/selfaktuell/cgi-lib.htm). Beim zweiten Bsp. habe ich aber ein Problem, da funktioiert bei mir die Abfrage nicht, ob eine Datei ausgewählt wurde oder nicht. Denn das Skript frägt ab ob die Feldvariable (z.B: 'datei') gleich Null ist. D.h. wenn nichts in das entsprechende Feld eingetragen worden ist, gib es eine Fehlermeldung. Sobald aber in der Variable "writefiles" etwas steht, schreibt die "cgi-lib.pl" automatisch Daten in die entsprechende Variable (hier also in 'datei'). D.h. das Skript merkt nicht mehr ob wirklich eine Datei hochgeladen wurde. Wie kann ich nun abfragen ob tatsächlich eine Datei angegeben wurde? Und wie finde ich den ursprünglichen Namen der Datei heraus. Und wie merkt das Skript von welchem Typ die Datei ist? (Dies könnte man evt. über den Namen herausfinden).
Vielen Dank für Euere Bemühungen
Dominique
Hallo
Rolf Rost hat ja schön beschrieben wie der Dateiupload via cgi-lib.pl funktioniert (http://www.teamone.de/selfaktuell/cgi-lib.htm). Beim zweiten Bsp. habe ich aber ein Problem, da funktioiert bei mir die Abfrage nicht, ob eine Datei ausgewählt wurde oder nicht. Denn das Skript frägt ab ob die Feldvariable (z.B: 'datei') gleich Null ist. D.h. wenn nichts in das entsprechende Feld eingetragen worden ist, gib es eine Fehlermeldung. Sobald aber in der Variable "writefiles" etwas steht, schreibt die "cgi-lib.pl" automatisch Daten in die entsprechende Variable (hier also in 'datei'). D.h. das Skript merkt nicht mehr ob wirklich eine Datei hochgeladen wurde. Wie kann ich nun abfragen ob tatsächlich eine Datei angegeben wurde?
Dominique
Hallo,
Du hast recht, die Variable wird überschrieben. Eine Möglichkeit zum Abfragen, ob eine Eingabe erfolgte gibt es jedoch: den Rückgabewert von &ReadParse genutzen.
Mein BeispielScript ist auch nur das Wesentliche für den Prozess des Uploads mit CGI-LIB. Es gehört noch einiges mehr dazu um die Sache sicher zu machen, es müssen weitere Benutzereingaben erfasst werden, eine Logdatei geschrieben werden (Datum, Dateinamen....) uvam. Aber im Prinzip gehts so.
Anstelle der CGI-LIB kann auch das Modul CGI.PM verwendet werden (Lincoln Stein), hier gibt es einige Möglichkeiten mehr fürs Upload. Ich habe mich jedoch noch nicht weiter mit diesem Modul befassen können (Zeitmangel).
Viele Grüße, Rolf
Vielen Dank für Deine Antwort,
aber ein, zwei Fragen hätte ich noch...
Du hast recht, die Variable wird überschrieben. Eine Möglichkeit zum Abfragen, ob eine Eingabe erfolgte gibt es jedoch: den Rückgabewert von &ReadParse genutzen.
Welchen Wert meinst Du damit? Wenn ich sage $x = ReadParse(), dann erhalte ich doch einfach die Anzahl Felder, oder nicht?
Anstelle der CGI-LIB kann auch das Modul CGI.PM verwendet werden (Lincoln Stein), hier gibt es einige Möglichkeiten mehr fürs Upload. Ich habe mich jedoch noch nicht weiter mit diesem Modul befassen können (Zeitmangel).
Sollte ich diesen Lincoln Stein kennen? Hast Du mir die Adresse, wo ich das CGI.PM Modul finde?
Vielen Dank
Dominique
Vielen Dank für Deine Antwort,
aber ein, zwei Fragen hätte ich noch...Du hast recht, die Variable wird überschrieben. Eine Möglichkeit zum Abfragen, ob eine Eingabe erfolgte gibt es jedoch: den Rückgabewert von &ReadParse genutzen.
Welchen Wert meinst Du damit? Wenn ich sage $x = ReadParse(), dann erhalte ich doch einfach die Anzahl Felder, oder nicht?
$x ist gleich 0, wenn keine Eingabe erfolgte.
Sollte ich diesen Lincoln Stein kennen? Hast Du mir die Adresse, wo ich das CGI.PM Modul finde?
http://stein.cshl.org/WWW/software/CGI/cgi_docs.html
Vielen Dank
Dominique
Hallo, ich habs einfach mal in Dein Posting hineingeschreiben.
Schönes Wochenende, Rolf
Nochmals vielen Dank für Deine Antworten
Welchen Wert meinst Du damit? Wenn ich sage $x = ReadParse(), dann erhalte ich doch einfach die Anzahl Felder, oder nicht?
$x ist gleich 0, wenn keine Eingabe erfolgte.
Ich mache da irgendetwas falsch, bei mir entspricht $x der Anzahl Felder, unabhängig was dort eingegeben wurde. Wo liegt der Fehler oder weisst Du noch ne anderer Lösung?
Vielen Dank und noch einen schönen Sonntag
Dominique
Nochmals vielen Dank für Deine Antworten
Welchen Wert meinst Du damit? Wenn ich sage $x = ReadParse(), dann erhalte ich doch einfach die Anzahl Felder, oder nicht?
$x ist gleich 0, wenn keine Eingabe erfolgte.
Ich mache da irgendetwas falsch, bei mir entspricht $x der Anzahl Felder, unabhängig was dort eingegeben wurde. Wo liegt der Fehler oder weisst Du noch ne anderer Lösung?
Vielen Dank und noch einen schönen Sonntag
Dominique
Hallo,
ziehe dir mal die neuere Version von CGILIB, die 2.18 vielleicht klappts damit. Das mit dem Rückgabewert funktioniert einwandfrei mit Radio- oder Checkboxen. Mit Inputtypetext-Feldern scheint da ein Bug in der 2.17 zu liegen, auf der HP von SE Brenner gibts ein Beispiel <trost> was auch nicht geht </trost>.
Und heute ist Sonntag, Rolf <g>
Hallo Dominique,
zum Thema File Upload gibt es unter
http://www.terminalp.com/scripts/
ein schoenes Skript, das ich selbst verwende und welches sich auch gut zum Studieren eignet.
Viele Gruesse
Andre