Пытаюсь распаковать zip-файл прямо из php://input
потока. Я запускаю Laravel Homestead, PHP 7.1.3-3+deb.sury.org~xenial+1
, с конечной точкой в myproject.app/upload
, вот команда curl
:
curl --request POST \
--url 'http://myproject.app/upload' \
--data-binary "@myfile.zip" \
Вот список всех методов, которые я пробовал, но все они не работают:
dd(file_get_contents('compress.zlib://php://input'));
file_get_contents (): не может представлять поток типа Input как дескриптор файла
$fh = fopen('php://input', 'rb');
stream_filter_append($fh, 'zlib.inflate', STREAM_FILTER_READ, array('window'=>15));
$data = '';
while (!feof($fh)) {
$data .= fread($fh, 8192);
}
dd($data);
""
$zip = new ZipArchive;
$zip->open('php://input');
$zip->extractTo(storage_path() . '/' . 'myfile');
$zip->close();
ZipArchive :: extractTo (): недопустимый или неинициализированный объект Zip
Вот все ссылки, которые я нашел по этой теме:
http://php.net/manual/en/wrappers.php#83220
http://php.net/manual/en/wrappers.php#109657
http://php.net/manual/en/wrappers.compression.php#118461
https://secure.phabricator.com/rP42566379dc3c4fd01a73067215da4a7ca18f9c17
https://arjunphp.com/how-to-unpack-a-zip-file-using-php/
Я начинаю думать, что невозможно работать с потоками с помощью встроенных в PHP функций zip. Накладные расходы и сложность записи временных файлов были бы довольно разочаровывающими. Кто-нибудь знает, как это сделать, или это баг?