Ich möchte also, dass Benutzer große Dateien hochladen können, ohne sich um die maximalen Größen der Post kümmern zu müssen. Die Alternative besteht darin, PUT zu verwenden und eine Datei als Rohdaten zu senden. Wenn ich jquery benutze, kann ich das tun:
%Vor%In PHP kann ich das tun:
%Vor%Ich mache das nicht:
%Vor%Da die ganze Datei in eine Variable eingefügt wird, füllt sie sicher den gesamten Speicher beim Hochladen großer Dateien.
Was ich nicht herausfinden kann, ist, wie man die Dateidaten ohne die Formgrenzen schreibt. Im Moment schreibt es am Anfang der Datei etwas wie folgt:
%Vor%und unten etwas wie folgt:
%Vor%Also muss ich die Daten analysieren. Aber dazu muss ich den gesamten Datenstrom in den Speicher einlesen und bei großen Videodateien möchte ich das nicht machen. Ich habe etwas über das Erstellen eines php: // temp-Streams gelesen. Aber noch kein Glück damit. Wie kann ich nur den Inhalt in eine Datei ohne den Grenzkopf schreiben? Und ohne zuerst alle Daten in eine Variable zu pumpen?
Vielleicht eine Kombination von fgets
, um das Lesen an einer neuen Zeile zu stoppen und nach den Grenzen zu suchen:
Das Rad muss nicht neu erstellt werden. Verwenden Sie einfach POST und ändern Sie die PHP-Konfiguration zu größeren Grenzen. Diese Grenzwerte können auch pro Verzeichnis / Host festgelegt werden.
Verwenden Sie .htaccess oder Ihre apache.conf
%Vor%Es ist auch eine gute Idee, andere Grenzen wie max_input_time anzupassen.
Vergessen Sie nicht, die empfangene Datei mithilfe von move_uploaded_file , um zusätzliche Arbeit zu vermeiden.