Thread Dateiname für Uploadscript übergeben
(8 answers)
Opened by stefank86 at 2006-07-24 18:38
Vielleicht ist nicht ganz klar, wie ein Dateiupload in HTTP funktioniert: Der Dateiinhalt wird zusammen mit den anderen Parametern als POST-Daten übertragen (in einer HTTP-Message des Typs "multipart/form-data"; deshalb ist der Dateiname, wie er vom Browser übergeben wird, auch ziemlich wurscht für den Upload). Es gibt also keine getrennte Übertragung nach dem Motto "gib mir erstmal den Dateinamen, und dann hole ich mir den Dateiinhalt". Das Dateihandle, welches man von CGI.pm bekommt, ist ein Handle für die temporäre Datei, in der CGI.pm erstmal den Dateiinhalt zwischengespeichert hat, bis sich das CGI-Skript um die Daten kümmert.
Daher ist es schwierig, die Auswertung des Dateiinhalts und die der übrigen Parameter in zwei Skripte aufzuteilen. Entweder, man wertet alles selber aus (was aber bei "multipart/form-data" nicht trivial ist) oder man überlässt alles CGI.pm, installiert aber einen "upload_hook", um sich selber um den Dateiinhalt zu kümmern, wenn die Parameterauswertung an diesen Teil kommt. Den Inhalt könnte man dann an ein zweites Skript weiterleiten. Ich sehe darin aber keinerlei Vorteil gegenüber der Methode, alles CGI.pm zu überlassen und sich mit upload() das Filehandle zu der temporären Datei geben zu lassen. Mehr zum upload_hook steht in CGI unter CREATING A FILE UPLOAD FIELD. |