Erhalten Sie rohe Postdaten
Laut php-Handbuch noch in php://input weder $HTTP_RAW_POST_DATA
Arbeit mit multipart/form-data
POST-Anfragen.
"php://input ermöglicht das Lesen der raw POST-Daten. Es ist eine weniger speicherintensive alternative zum $HTTP_RAW_POST_DATA
und benötigt keine speziellen php.ini-Direktiven. php://input ist nicht verfügbar, mit enctype="multipart/form-data"
."
Wie kann ich raw-Daten für multipart/form-data
Formen?
Kommentar zu dem Problem - Öffnen
Wenn es zum Wohle der Zählung von bytes, können nicht Sie kombinieren die Zählung von $HTTP_RAW_POST_DATA bytes mit den byte-Anzahl für jedes $_FILES ?
@karim79, Denn das ist es nicht.
InformationsquelleAutor der Frage Andrey M. | 2009-09-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Direkte Antwort: kann man das nicht. PHP besteht auf der Analyse es sich, Wann immer es sieht multipart/form-data Content-Type. Die raw-Daten nicht zur Verfügung. Leider. Aber Sie hack um ihn herum.
Traf ich ein ähnliches problem, einen partner zu senden war falsch formatiert Daten als " multipart/form-data, PHP konnte nicht analysiert werden, und war nicht abzugeben, so konnte ich parse es mich.
Die Lösung? Ich Hinzugefügt dies zu meiner apache-conf:
Dadurch ändert sich der Content-Typ der eingehenden Anfrage XXX.php von multipart/form-data, multipart/form-data-Alternative, das ist genug, um PHP-block versucht zu analysieren, es
Danach kann man schließlich Lesen Sie den gesamten raw-Daten von php://input und analysieren Sie es selbst.
Es ist hässlich, aber ich habe nicht gefunden, eine bessere oder sogar eine andere Lösung - kurze Fragen, die partner lösen Ihre Seite.
NB! Wenn Sie das tun, was ich hier beschrieben, $_FILES leer sein.
InformationsquelleAutor der Antwort Anti Veeranna
Können Sie festlegen,
enable_post_data_reading = Off
und PHP nicht abfangenmultipart/form-data
Daten.Erfordert: PHP 5.4
InformationsquelleAutor der Antwort gerard
Ich nicht implementieren, das vollständig, aber es sieht aus wie es funktionieren sollte. In
Apache conf
:Einstellung der
Content-Type
zuapplication/x-httpd-php
erscheint, zu lösen das ursprüngliche problem von PHP Parsen der Körper, und das problem Norbert Farkas berichtet: "Apache sendet PHP-source-code". Der Körper ist dann aufphp://input
und den wirklichen Inhalt geben Sie in derX-Real-Content-Type
header. (Dieser header kann nicht notwendig sein für Sie-dieMULTIPART_CTYPE
variable nicht scheinen zu zeigen, bis in meinem$_ENV
, aber der neue header hat.) Alle anderen Anträge, die behandelt werden sollten als üblich.Dank Anti Veeranna für die meisten ist es! 🙂
EDIT: P. S. Natürlich, es ist Apache-spezifisch, aber in einigen anderen Konfigurationen von PHP kann es sehr wohl einfachere Methoden.
InformationsquelleAutor der Antwort Joey Hewitt