Python 3.4 и более поздние версии предлагают pathlib в стандартной библиотеке. Вы можете сделать:
from pathlib import Path
asm_pths = [pth for pth in Path.cwd().iterdir()
if pth.suffix == '.asm']
Или, если вам не нравятся перечни списков:
asm_paths = []
for pth in Path.cwd().iterdir():
if pth.suffix == '.asm':
asm_pths.append(pth)
Path
объекты могут быть легко преобразованы в строки.
Прямой ответ: вы не можете этого сделать. PHP настаивает на его разборе, всякий раз, когда он видит Content-Type multipart / form-data. Необработанные данные не будут доступны вам. К сожалению.
Я столкнулся с подобной проблемой, партнер отправил неверно отформатированные данные как multipart / form-data, PHP не смог разобрать его и не выдавал, чтобы я мог его разобрать себя.
Решение? Я добавил это в свой apache conf:
<Location "/backend/XXX.php">
SetEnvIf Content-Type ^(multipart/form-data)(.*) NEW_CONTENT_TYPE=multipart/form-data-alternate$2 OLD_CONTENT_TYPE=$1$2
RequestHeader set Content-Type %{NEW_CONTENT_TYPE}e env=NEW_CONTENT_TYPE
</Location>
Это изменит Content-Type входящего запроса на XXX.php из multipart / form-data в multipart / form-data-alternate, что достаточно чтобы блокировать PHP от попытки разобрать его
После этого вы можете, наконец, прочитать все необработанные данные из ввода php: // и проанализировать его самостоятельно.
Это уродливо, но у меня есть не нашли лучшего или фактически любого другого решения - не попросив партнера исправить свою сторону.
NB! Когда вы сделаете то, что я описал здесь, $ _FILES будет пустым.
Я не реализовал это полностью, но похоже, что он должен работать. В Apache conf
:
SetEnvIf Content-Type ^(multipart/form-data)(.*) MULTIPART_CTYPE=$1$2
RequestHeader set Content-Type application/x-httpd-php env=MULTIPART_CTYPE
RequestHeader set X-Real-Content-Type %{MULTIPART_CTYPE}e env=MULTIPART_CTYPE
Кажется, что настройка Content-Type
на application/x-httpd-php
решает исходную проблему PHP-анализа тела, а проблема Норберта Фаркаса сообщила: «Apache отправляет обратно PHP исходный код ". Затем тело доступно на php://input
и действительном типе содержимого в заголовке X-Real-Content-Type
. (Этот заголовок может быть вам не нужен - переменная MULTIPART_CTYPE
, похоже, не показывалась в моем $_ENV
, но новый заголовок сделал.) Все остальные запросы должны обрабатываться как обычно.
Благодаря Anti Veeranna для большей части этого! :)
EDIT: P.S. Очевидно, что это специфичный для Apache, но в некоторых других конфигурациях PHP может быть проще.
Вы можете установить enable_post_data_reading = Off
, а PHP не будет перехватывать данные multipart/form-data
.
Требуется: PHP 5.4
multipart/form-data
.
– Anshul
28 May 2014 в 12:16
enable_post_data_reading = Off
дает вам сырые данные о multipart / form-data, не так ли?
– Pacerier
8 February 2015 в 16:44
enable_post_data_reading
. – Pacerier 5 February 2015 в 13:12