userland multipart / form-data handler

Я ' m ищет подключаемый сценарий / класс, который анализирует multipart / form-data и заполняет из него $ _ POST (+ raw) и $ _ FILES . Обычно PHP делает это сам. Но поскольку автоматической обработки мне не хватает и делает php: // input недоступным [1] , я, вероятно, буду использовать что-то вроде этого, чтобы предотвратить это:

RewriteRule. * - [E = CONTENT_TYPE : noparsing / for-you-php]
Не работает. Фактическое решение требует mod_headers и RequestHeader set ...

Процедура извлечения может быть не такой сложной. Но лучше использовать проверенное решение. И прежде всего я бы предпочел реализацию, которая использует fgets для разделения и имитирует обработку $ _ FILES близко и эффективно. Поиск конца двоичных данных может показаться мне довольно сложным, в частности, когда вам нужно отключить \ r \ n , но вы можете столкнуться с клиентами, которые отправляют только \ n (не разрешено, но возможно).

Я уверен, что нечто подобное существует. Но мне трудно погуглить. Кто-нибудь знает реализацию? (PEAR :: mimeDecode можно взломать, чтобы получить некоторую работу с данными формы, но это слишком много памяти.)

Вкратце вариант использования: необходимо сохранить необработанные имена полей (включая пробелы и специальные символы) для ведение журнала, но не всегда можно избежать загрузки файлов.


В декоративных целях запрос POST выглядит так:

POST / HTTP/1.1
Host: localhost:8000
Content-Length: 17717
Content-Type: multipart/form-data; boundary=----------3wCuBwquE9P7A4OEylndVx

И после \ r \ n \ r \ n последовательности multipart / payload выглядит следующим образом:

------------3wCuBwquE9P7A4OEylndVx
Content-Disposition: form-data; name="_charset_"

windows-1252
------------3wCuBwquE9P7A4OEylndVx
Content-Disposition: form-data; name=" text field \\ 1 \";inject=1"

text1 te twj sakfkl
------------3wCuBwquE9P7A4OEylndVx
Content-Disposition: form-data; name="file"; filename="dial.png"
Content-Type: image/png

IPNG Z @@@MIHDR@@B`@@B;HF@@@-'.e@@@AsRGB@.N\i@@@FbKGD@?@?@? ='S@@@     
@@@GtIMEGYAAU,#}BRU@@@YtEXtComment@Created with GIMPWANW@@ @IDATxZl]w|

9
задан Community 23 May 2017 в 12:15
поделиться