Thread Alternative zu CGI - Rostis Framework
(19 answers)
Opened by rosti at 2018-07-17 10:11
Hi danke der Nachfrage!
Bei einem Upload werden die Daten/HTTP-Message-Body serverseitig aus STDIN gelesen. Maßgeblich hierfür ist die Angabe im Requestheader Content-Length. Edit: Falls Du CGI.pm verwendest, ist STDIN abgeräumt! Verzichte also auf CGI.pm Du könntest also, weit weg von multipart/form-data, mit File API ein Upload ganz einfach so machen, daß die im Browser eingefügte Datei, die ja als Blob vorliegt, so wie sie ist, per POST oder PUT als Message-Body gesendet wird: xhr.send(blob); Alle weiteren Angaben kommen entweder in den Query-String oder in einen custom Request-Header. Also ich habe mir ein eigenes xCGI.pm geschrieben, was um solche custom Content-Types erweiterbar ist. Der Verzicht auf CGI.pm an dieser Stelle bringt einen Performanceschub um den Faktor tausend und höher. Vor allem wird damit nicht der Server vergewaltigt. Wenn Du Dir den Content-Type multipart/form-data mal anschaust, kannst Du Dir ja in etwa vorstellen, daß der Parser ziemlich CPU-lastig sein muss. Mit CGI.pm werden auch temporäre Dateien angelegt. Alles in Allem ist das ziemlicher Schrott zumal es seit Jahren bessere Alternativen gibt welche die FileAPI ermöglicht. MfG PS: HTML/JS Code: (dl
)
1 <input type="file" id="uplink" onchange="upload()"> Serverseitig, Perl: Code (perl): (dl
)
read(STDIN, my $binary, $ENV{CONTENT_LENGTH}); Last edited: 2018-07-16 10:52:28 +0200 (CEST) |