Я пытаюсь прочитать исходный поток ввода из php, используя php: // input. Это работает для большинства файлов, однако файлы размером более 4 МБ игнорируются при загрузке. Я установил post_max_size и upload_max_size в 20M каждый, думая, что это решит мою проблему, но это не так. Есть ли еще один параметр php.ini, который нужно настроить или мне нужно сделать какой-то фрагмент? Если да, то как мне это сделать? Вот код upload.php:
$fileName = $_SERVER['HTTP_X_FILE_NAME']; $contentLength = $_SERVER['CONTENT_LENGTH']; file_put_contents('uploads/' . $fileName, file_get_contents("php://input"));
Попробуйте stream_copy_to_stream
, который напрямую перекачивает содержимое ввода в файл, не копируя его сначала в память:
$input = fopen('php://input', 'rb'); $file = fopen($filename, 'wb'); stream_copy_to_stream($input, $file); fclose($input); fclose($file);
Альтернатива:
$input = fopen('php://input', 'rb'); $file = fopen($filename, 'wb'); while (!feof($input)) { fwrite($file, fread($input, 102400)); } fclose($input); fclose($file);