hotti: Backstage: Upload multipart/form-data

Beitrag lesen

hi,

ich frag mich wie sicher die dateiprüfung mit file::type im endeffekt ist. wenn sich einer wirklich gut auskennt (was ich definitiv nicht kann), dann kann er mir doch auch ne bombe für ein stück käsekucken verkaufen. kann eine tempdatei schaden anrichten, schon bevor ich sie an die richtige stelle kopiere? ne, oder? sonst könnte man ja jede maschine im handumdrehen knacken.

Schau Dir das Script an, was ich gestern abend erstellt habe. Anschaulicher gehts nicht, und mal so ganz nebenbei bemerkt: Anschaulicher habe ich das auch noch nirgendwo so gesehen.

Der Webserver bekommt eine Multipart-Message. Das sind, vereinfacht ausgedrückt, mehrere Dateien in einer Datei. Das heißt, die Informationen zu einer Einzel-Datei kannst Du erst bekommen, wenn die Multipart-Message in seine Einzelteile zerlegt ist.

Dieses Zerlegen macht der Parser (CGI.pm) und der kann das erst machen, wenn die Multipart-Message komplett übertragen wurde. Unglücklicherweise ist eben diese Multipart-Message zeichenorientiert strukturiert und muss zum Parsen komplett, am Stück, als Ganzes in den Hauptspeicher gelesen werden, die Komponenten, soweit als file kenntlich, liegen im Ergebnis dessen temporär auf der Festplatte des Servers.

Würde es Browser geben, die eine Multipart-Message nicht zeichenorientiert sondern byteorientiert strukturiert senden würden, könnte das Parsen bereits beim Lesen der Byte-Sequenz aus dem Socket heraus gemacht werden. Das hätte zur Folge, dass Meta-Informationen schon verfügbar sind, bevor die gesamte Multipart-Message übertragen ist und als hübscher kleiner Nebeneffekt wird dazu weniger RAM verschwendet.

Vermutlich wird es irgendwann mal sowas geben, möglicherweise treibt der Mobile-Bereich die Entwicklung voran.

bis dahin müssen wir uns mit dem rumärgern, was da ist ;)

Hotti

PS: MIME ist auch Schrott.