Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определить тип файла 
:(
    Опции темы
wind1
  Дата 20.8.2009, 07:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 29.6.2007

Репутация: нет
Всего: нет



Подскажите, пожалуйста, как определить тип файла, сохраненного на сервере?
Я пробовал использовать функцию mime_content_type(), но она почему-то все время возвращает false.
Может, есть другие способы?
PM MAIL   Вверх
nerezus
Дата 20.8.2009, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



wind1, как прравило тип первоначально по разширению узнают. И только потом уточняют другими способами.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
MoLeX
Дата 20.8.2009, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



wind1, 
Код

function type_files( $file )
{
    $ext = array_pop(explode('.', $file));
    foreach( file("S:\usr\local\apache\conf\mime.types" ) as $line)
    {
        if( preg_match('/^([^#]\S+)\s+.*'.$ext.'.*$/', $line, $m))
        return $m[1];
    }
    
     return 'application/octet-stream';
}

echo type_files('aimp_relax.jpg');    



Цитата(wind1 @  20.8.2009,  07:23 Найти цитируемый пост)
Я пробовал использовать функцию mime_content_type(), но она почему-то все время возвращает false.

вроде PECL нужен

Добавлено через 58 секунд
Цитата(nerezus @  20.8.2009,  08:37 Найти цитируемый пост)
как прравило тип первоначально по разширению узнают.

да, а ты веришь всему что от пользователя приходит?!)))

Добавлено через 1 минуту и 15 секунд
можно же и .doc за .pdf выдать


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
wind1
Дата 20.8.2009, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 29.6.2007

Репутация: нет
Всего: нет



nerezus,
Допустим, у меня даже есть разрешение файла. Как теперь получить тип вида "тип/подтип" (например, "image/gif")?

MoLeX,
Именно так у меня сейчас пока что и работает это определение. Но это плохой вариант, т.к. есть привязка к определенному каталогу. А надо, чтобы работало в любом случае, где бы ни был установлен apache.
PM MAIL   Вверх
MoLeX
Дата 20.8.2009, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



wind1, таскай с собой файл mime.types

Добавлено через 1 минуту и 16 секунд
wind1, вот есть готовая база типов
Код

$mimes = array(    'hqx'    =>    'application/mac-binhex40',
                'cpt'    =>    'application/mac-compactpro',
                'csv'    =>    array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel'),
                'bin'    =>    'application/macbinary',
                'dms'    =>    'application/octet-stream',
                'lha'    =>    'application/octet-stream',
                'lzh'    =>    'application/octet-stream',
                'exe'    =>    'application/octet-stream',
                'class'    =>    'application/octet-stream',
                'psd'    =>    'application/x-photoshop',
                'so'    =>    'application/octet-stream',
                'sea'    =>    'application/octet-stream',
                'dll'    =>    'application/octet-stream',
                'oda'    =>    'application/oda',
                'pdf'    =>    array('application/pdf', 'application/x-download'),
                'ai'    =>    'application/postscript',
                'eps'    =>    'application/postscript',
                'ps'    =>    'application/postscript',
                'smi'    =>    'application/smil',
                'smil'    =>    'application/smil',
                'mif'    =>    'application/vnd.mif',
                'xls'    =>    array('application/excel', 'application/vnd.ms-excel', 'application/msexcel'),
                'ppt'    =>    array('application/powerpoint', 'application/vnd.ms-powerpoint'),
                'wbxml'    =>    'application/wbxml',
                'wmlc'    =>    'application/wmlc',
                'dcr'    =>    'application/x-director',
                'dir'    =>    'application/x-director',
                'dxr'    =>    'application/x-director',
                'dvi'    =>    'application/x-dvi',
                'gtar'    =>    'application/x-gtar',
                'gz'    =>    'application/x-gzip',
                'php'    =>    'application/x-httpd-php',
                'php4'    =>    'application/x-httpd-php',
                'php3'    =>    'application/x-httpd-php',
                'phtml'    =>    'application/x-httpd-php',
                'phps'    =>    'application/x-httpd-php-source',
                'js'    =>    'application/x-javascript',
                'swf'    =>    'application/x-shockwave-flash',
                'sit'    =>    'application/x-stuffit',
                'tar'    =>    'application/x-tar',
                'tgz'    =>    'application/x-tar',
                'xhtml'    =>    'application/xhtml+xml',
                'xht'    =>    'application/xhtml+xml',
                'zip'    =>  array('application/x-zip', 'application/zip', 'application/x-zip-compressed'),
                'mid'    =>    'audio/midi',
                'midi'    =>    'audio/midi',
                'mpga'    =>    'audio/mpeg',
                'mp2'    =>    'audio/mpeg',
                'mp3'    =>    array('audio/mpeg', 'audio/mpg'),
                'aif'    =>    'audio/x-aiff',
                'aiff'    =>    'audio/x-aiff',
                'aifc'    =>    'audio/x-aiff',
                'ram'    =>    'audio/x-pn-realaudio',
                'rm'    =>    'audio/x-pn-realaudio',
                'rpm'    =>    'audio/x-pn-realaudio-plugin',
                'ra'    =>    'audio/x-realaudio',
                'rv'    =>    'video/vnd.rn-realvideo',
                'wav'    =>    'audio/x-wav',
                'bmp'    =>    'image/bmp',
                'gif'    =>    'image/gif',
                'jpeg'    =>    array('image/jpeg', 'image/pjpeg'),
                'jpg'    =>    array('image/jpeg', 'image/pjpeg'),
                'jpe'    =>    array('image/jpeg', 'image/pjpeg'),
                'png'    =>    array('image/png',  'image/x-png'),
                'tiff'    =>    'image/tiff',
                'tif'    =>    'image/tiff',
                'css'    =>    'text/css',
                'html'    =>    'text/html',
                'htm'    =>    'text/html',
                'shtml'    =>    'text/html',
                'txt'    =>    'text/plain',
                'text'    =>    'text/plain',
                'log'    =>    array('text/plain', 'text/x-log'),
                'rtx'    =>    'text/richtext',
                'rtf'    =>    'text/rtf',
                'xml'    =>    'text/xml',
                'xsl'    =>    'text/xml',
                'mpeg'    =>    'video/mpeg',
                'mpg'    =>    'video/mpeg',
                'mpe'    =>    'video/mpeg',
                'qt'    =>    'video/quicktime',
                'mov'    =>    'video/quicktime',
                'avi'    =>    'video/x-msvideo',
                'movie'    =>    'video/x-sgi-movie',
                'doc'    =>    'application/msword',
                'docx'    =>    'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
                'xlsx'    =>    'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
                'word'    =>    array('application/msword', 'application/octet-stream'),
                'xl'    =>    'application/excel',
                'eml'    =>    'message/rfc822'
            );



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
wind1
Дата 20.8.2009, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 29.6.2007

Репутация: нет
Всего: нет



MoLeX,
Так не пойдет.
А есть ли какая-нибудь функция в php, которая бы возвратила путь к каталогу, где лежит файл mime.types (или хотябы к каталогу, где установлен apache)?
PM MAIL   Вверх
MoLeX
Дата 20.8.2009, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



wind1, тебе нужно определить тип файла который уже лежит на сервере или же который через форму закачал пользователь? 


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
wind1
Дата 20.8.2009, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 29.6.2007

Репутация: нет
Всего: нет



Который УЖЕ лежит на сервере. Если через форму, то там и определять нечего.
PM MAIL   Вверх
MoLeX
Дата 20.8.2009, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



ставь библиотеку PECL
Цитата

для работы mime_content_type() необходима установка из библиотеки PECL.


и пользуйся прелестями ф-ци mime_content_type()

Добавлено через 55 секунд
http://www.google.ru/search?hl=ru&q=PE...mp;aq=f&oq=

Это сообщение отредактировал(а) MoLeX - 20.8.2009, 09:16


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
wind1
Дата 20.8.2009, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 29.6.2007

Репутация: нет
Всего: нет



А какое именно расширение нужно для функции mime_content_type()?
PM MAIL   Вверх
nerezus
Дата 20.8.2009, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

можно же и .doc за .pdf выдать
 И что? Если pdf-либа не определит как PDF - значит не pdf. В чем проблема то?
Но это оффтоп уже.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Ипатьев
Дата 20.8.2009, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Очень желательно в вопросе явно писать, что нужен именно mime тип. 
А то совершенно неясно, какой тип нужен автору.
И что делать с файлами, для которых mime не найдется.
PM MAIL   Вверх
icewind
Дата 20.8.2009, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 11.4.2009
Где: Ростов-на-Дону

Репутация: 20
Всего: 20



MoLeX, пардон, а ваша функция type_files не в соответствии с расширением файла тип возвращает? И если я закачаю картинку jpg c названием document.pdf она вернет мне image/jpeg? Или все-таки application/pdf?


--------------------
user posted image
PM MAIL Skype   Вверх
MoLeX
Дата 20.8.2009, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



блин, даже и не протестировал её...

Цитата(icewind @  20.8.2009,  10:26 Найти цитируемый пост)
а ваша функция type_files

поправочка: это не моя ф-ция


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
MoLeX
Дата 20.8.2009, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



похоже тока два способа:
1. mime_content_type()
2. открывать файл и анализировать


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
nerezus
Дата 20.8.2009, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Считаю способ определения по расширению единственным универсально-верным.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.2223 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.