2013-08-07 1 views
0

Я работаю над проектом, связанным с управлением версиями, и у меня есть ссылки на файлы, просматриваемые через ViewVC. Я пытаюсь решить, является ли файл нормальным файлом или сжатыми данными, и поэтому решает, просматривать или скачивать их.PHP: лучший способ проверить, сжаты ли файлы данных

Я думаю об использовании функции finfo_file и проверке части «сжатых данных» в возвращаемом описании файла.

Вопрос в том, действительно ли это хороший способ проверки сжатых типов файлов? Если нет, то что лучше? Я не уверен, что эта функция говорит то же самое для всех сжатых файлов, например. .zip.

ответ

0

Если вы знаете, что либо будет ZIP или нет (и нет других возможностей вы можете попробовать открыть его как ZIP файл и увидеть, если функция успешна или нет.

http://www.php.net/manual/en/ziparchive.open.php

+0

нет ограничений на тип файла. может быть zip, gzip, tar или любой другой сжатый файл. – mavili

0

Я бы сравнил расширение файла с списком поддерживаемых сценариев сжатия, которые я использую. Если один из скриптов соответствует, загрузите его, иначе предположите, что он может быть просмотрен в текстовом редакторе (или другом программном обеспечении для просмотра.)

3

Если вы находитесь на сервере unix, лучший способ сделать это - использовать внутреннюю функцию «файл»:

<? 
echo system("file -i -b file.zip"); 
echo system("file -i -b file.tar"); 
echo system("file -i -b file.gz"); 
?> 

Выходной сигнал будет, как:

application/x-zip 
application/x-tar 
application/x-gzip 
+0

это эффективно, но мне все равно нужен список известных сжатых типов mime для проверки. То, что я искал, было действительно двухсторонней проверкой: сжатой или не сжатой. – mavili

+0

На самом деле, я считаю, что 'finfo_file' фактически использует команду Unix' file'. Поскольку он дает тот же результат, что и команда без аргументов – mavili

+0

@mavili Вы не можете определить, сжат ли файл или нет, если вы не ограничиваете возможные сжатия. – Abrixas2