Первые 3 байта FLV-файла являются сигнатурой «FLV». Теперь мой вопрос:Проверить тип файла (FLV) перед загрузкой файла PHP во временную папку, только прочитав только 3 байта файла
Есть ли возможность в PHP обрабатывать загрузки файлов, чтобы мы могли подключиться к входному потоку загрузки файла и проверить первые 3 байта?
Сценарий: я не хочу, чтобы полный файл был загружен (во временную папку), а затем проверьте, является ли файл FLV или нет, я просто хочу прочитать первые несколько байтов загрузки потока, а если нет «FLV» затем вернется/выйдет.
Файл должен быть загружен с помощью формы на основе HTML. Невозможно полагаться на javascript, флеш-загрузчик или любые обходные решения для проверки на стороне клиента, то есть нужно чистое PHP-решение.
Я уже знаю, что PHP не передать контроль над нашим скриптом, пока он не закончит загрузку файла во временной папке и заселение глобальные переменные, т.е. $_POST
$_GET
$_FILES
и т.д.
Также есть несколько аналогичный вопрос здесь: How to upload a file byte by byte in php
, но ответы не удовлетворяют моим требованиям/вопросам.
Любые идеи действительно оценены!
Благодаря
Не могли бы вы использовать: '$ file = fopen (..); if (fgets ($ file, 3) === "FLV") {..} fclose ($ file); '? –
@ DannyBeckett, пожалуйста, прочитайте руководство fopen здесь: [link] (http://php.net/manual/en/function.fopen.php). Он не позволяет подключиться к клиентскому ПК для загрузки файлов. Это позволяет открывать файл на сервере или файлах через поддерживаемый протокол, и ни одно из них не соответствует моим требованиям. –
Вот почему я спросил *, если бы вы могли его использовать ... –