Ответ 1
Если файл загружен правильно и все в порядке, вы можете использовать информацию, предоставленную PHP superglobal $_FILES
. Использование filesize()
добавляет небольшие накладные расходы, поскольку ОС необходимо проверить файл для размера. Это зависит от вас, но, проверяя источник PHP на то, как он это делает, это ясно указывает, что он правильно вычисляет размер файла в многопрофильном запросе HTTP. В принципе, вы будете делать ту же работу снова, если бы вы были в filesize()
файле.
Причина, по которой вы можете доверять этому непосредственно из суперглобальной переменной, заключается в том, что многочастные запросы предоставляют границу, между которой находятся данные. По определению невозможно получить поврежденные данные, если протокол для извлечения данных не соблюдается. Другими словами, это означает, что браузер отправляет "разделитель", и PHP просто находит его и начинает проверять текст для данных между этим разделителем. Для этого он аккуратно выделяет требуемую память и может сразу кэшировать присвоенный номер - и этот номер является размером файла. Если что-то не так по пути, вы получите ошибки. Поэтому, если файл загружен правильно, информация о размере надежна.