Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MIME-тип файла, стандартными средствами... 
:(
    Опции темы
shootnix
Дата 8.1.2007, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 3.9.2005
Где: Казахстан

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



Собственно, что еще добавить?
Повторюсь просто: нужно узнать МИМЕ-тип файла (картинка аль экзе, аль текст аль ишшо какой), желательно не используя нестандартных модулей, как-нибудь разэдак так... Можно?
PM WWW ICQ   Вверх
tishaishii
Дата 9.1.2007, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


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

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



print <STDIN>;

Добавлено @ 00:02 
А, вообще-то, CGI - стандартный модуль.
PM MAIL ICQ Skype   Вверх
amg
Дата 9.1.2007, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



А системная команда file не подойдет?
PM MAIL   Вверх
shootnix
Дата 9.1.2007, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 3.9.2005
Где: Казахстан

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



Хм... я что-то, товарищи, не совсем понимаю, в чем суть ответа :-)
Может я не так вопрос задал? И, если можно, поподробнее, плз.:
Вот файл лежит у меня на диске. Я могу узнать - файл это или папка. ОК. А дальше-то? 
Хочу узнать, какой у файла МИМЕ-тип, экзешник он или просто картинка. По расширению узнавать тупо. Системная команда не желательно...

Можно узнать по содержимому джипег и пнг, можно узнать и rar и zip.. вот только это гемор, мож есть модули стандартные или что-то навроде file->stat...
PM WWW ICQ   Вверх
amg
Дата 9.1.2007, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(shootnix @  9.1.2007,  12:06 Найти цитируемый пост)
Хочу узнать, какой у файла МИМЕ-тип, экзешник он или просто картинка. По расширению узнавать тупо.
Браузеры, например, присваивают файлу на диске тот или иной МИМЕ-тип именно тупо, по расширению. И вообще, насколько я понимаю, у файла на диске нет такого атрибута как "МИМЕ-тип". Если нужно просто определить, что за файл, то, по моему, системная команда file (для linux) - самое то. Наверное, и для win есть что-то аналогичное. Скорее всего, и модуль соответствующий на CPAN есть. Только вряд ли он стандартный.

PM MAIL   Вверх
nitr
Дата 9.1.2007, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



гадатели ;)
Код

#!perl
use MIME::Types;
my $types = MIME::Types->new;
print $types->mimeTypeOf('1.html');


Добавлено @ 18:22 
имхо стандартный модуль (могу ошибатся, БД большая ;) )

можно так
1.pl
Код

#!perl
use MIME::Types;
my $types = MIME::Types->new;
print $types->mimeTypeOf('1.pl');

Цитата

D:\>1.pl
application/x-perl


Добавлено @ 18:23 
а как он работает... ;) имхо amg ответил ;)


--------------------
PM   Вверх
korob2001
Дата 10.1.2007, 06:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



В винде MIME хранится в реестре.
HKEY_CLASSES_ROOT -> .pl -> Content Type = application/x-perl

Заметь, что Content Type, полностью зависит от расширения. Файлы без расширения в винде являются неизвестными. Какой у них может быть тип?


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
nitr
Дата 10.1.2007, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



korob2001shootnix,  откройте MIME::Types , пролистайте ;)
amg тоже верно говорит - расширение... а модуль тут как тут ;) и ен привязан к ОС!

Добавлено @ 07:47 
у меня 637 строка ;)
Цитата

application/x-perl  pl,pm    8bit

з.ы.: и работаю я также во Фряхе (проверял и в ней!)

Добавлено @ 07:49 
короче
shootnix

perldoc MIME::Types

Это сообщение отредактировал(а) nitr - 10.1.2007, 08:08


--------------------
PM   Вверх
amg
Дата 10.1.2007, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



File::Type. Это модуль, который может определять и MIME-тип файла, и тип файла по содержимому. Есть пакет и под win.

Попробовал этот модуль. На самом он пытается определить MIME-тип файла только по содержимому (не обращая внимания на имя, и это правильно!), но делает это плохо. Другой модуль, File::MMagic, делает то же самое, но гораздо лучше. Рекомендую его.

Это сообщение отредактировал(а) amg - 10.1.2007, 10:40
PM MAIL   Вверх
shootnix
Дата 10.1.2007, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 3.9.2005
Где: Казахстан

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



Спасибо, товарищи... 
На CPAN валяется довольно много модулей для такого вот действа, только все они требуют установки. То есть, не стандартные. Это, в принципе, не плохо. Единственно - придется таскать его в дистрибе.. Или написать свой :-)
В общем, проблема, как мне кажется, более философская, поэтому и решена :-)))
PM WWW ICQ   Вверх
korob2001
Дата 10.1.2007, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Цитата(nitr @  10.1.2007,  04:45 Найти цитируемый пост)
korob2001, shootnix,  откройте MIME::Types , пролистайте ;)

И что? Посмотри на код метода который ты вызываешь для определения типа:
Код

sub mimeTypeOf($)
{   my ($self, $name) = @_;
    $self->create_type_index unless keys %type_index;
    $name =~ s/.*\.//;
    $type_index{lc $name};
}

Обрати внимание на эту строку:
Код

$name =~ s/.*\.//;

Она обрезает всё, кроме расширения.

Мало того, файл может и не существовать, попробуй преедай ему имя не существующего файла test.exe и получишь его тип. Он нужен для того, что бы просто определить к какой тип у файла с определённым расширением.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
nitr
Дата 10.1.2007, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



shootnix, посмотри плиз модуль, имхо стандартная поставка
MIME::Types
MIME::Type



--------------------
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

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


 




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


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

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