Czy istnieje ogólny typ MIME dla wszystkich plików obrazów?

27

Wiem, że mogę używać określonych typów MIME wymienionych na przykład tutaj lub ogólnego typu MIME dla dowolnego takiego pliku application/octet-stream, ale czy istnieje ogólny typ MIME dla wszystkich plików obrazów?

(Chcę edytować .desktopplik w Linux Mint KDE, aby utworzyć pozycję menu kontekstowego „Akcja” w Menedżerze plików Dolphin, która byłaby wyświetlana tylko dla plików obrazów.)

Excellll
źródło
1
Czy image/*działałoby (tak jak przeglądarki)?
Boldewyn
@Boldewyn - image/*działa w celu wskazanym w moim pytaniu, nawet w przypadku svgplików - to znaczy jako wpis na pulpicie MimeType=image/*. Odpowiedz na to bardziej szczegółowe pytanie, na które komentujesz, jest odpowiedzią.

Odpowiedzi:

26

Czy istnieje ogólny typ MIME dla wszystkich plików obrazów?

Zwykle nie ma, ale jest kilka wyjątków udokumentowanych w dalszej części tej odpowiedzi.

Potrzebujesz Mime Type, aby wiedzieć, jak przetwarzać plik (bez konieczności czytania nagłówka pliku).

Uwagi:

  • Nie wszystkie pliki obrazów mają nagłówek identyfikujący ich typ.

  • Na przykład pliki SVG to tylko pliki XML. Zatem bez prawidłowego typu mime lub rozszerzenia nie byłoby sposobu, aby poprawnie zidentyfikować typ pliku.

  • Typy MIME są określone jako Content-Type / podtyp

  • Nie ma typu MIME image/generic(patrz „Dalsza lektura” poniżej, aby uzyskać pełną listę podtypów zarejestrowanych obrazów IANA).


Czy to oznacza, że ​​istnieje wiele typów plików MIME?

Nie ma jednego, Content-Type/subtype który obejmowałby wiele formatów obrazów.

Teoretycznie możesz użyć nieznanego podtypu, takiego jak image/xyzW3C, który wyraźnie mówi:

„typ zawartości image/xyzjest wystarczający, aby poinformować agenta użytkownika, że ​​dane są obrazem, nawet jeśli agent użytkownika nie ma wiedzy o konkretnym formacie obrazu xyz...” takie działanie może być uzasadnione w przypadku nierozpoznanych podtypów tekstu, ale nie dla nierozpoznanych podtypów obrazu lub dźwięku

Ogólnie rzecz biorąc, najwyższy poziom Content-Type służy do deklarowania ogólnego typu danych, podczas gdy podtyp określa określony format dla tego typu danych.

Zatem typ zawartości „image / xyz” wystarczy, aby poinformować agenta użytkownika, że ​​dane są obrazem, nawet jeśli agent użytkownika nie ma wiedzy na temat określonego formatu obrazu „xyz”.

Takie informacje mogą być wykorzystane na przykład do podjęcia decyzji, czy pokazać użytkownikowi surowe dane z nierozpoznanego podtypu - takie działanie może być uzasadnione w przypadku nierozpoznanych podtypów tekstu, ale nie w przypadku nierozpoznanych podtypów obrazu lub dźwięku.

Z tego powodu zarejestrowane podtypy dźwięku, obrazu, tekstu i wideo nie powinny zawierać osadzonych informacji, które naprawdę są innego typu. Takie typy związków powinny być reprezentowane przy użyciu typów „wieloczęściowych” lub „aplikacji”.

Źródło W3C - pole nagłówka Content-Type


Czy mogę użyć symbolu wieloznacznego jak image/*w moim specjalnym przypadku?

aby można było z niego korzystać bez potrzeby określania pojedynczych rozszerzeń plików / mimów?

Tak. Jak już wspomniałeś, przy określaniu „Wpisu pulpitu” dla środowiska graficznego KDE i GNOME można użyć symbolu wieloznacznego.

Należy jednak pamiętać, że Key = MimeTypejest przestarzałe, ponieważ istnieje nowy standard w tym zakresie.

Type=MimeTypejest przestarzałe, ponieważ istnieje teraz nowy standard, zobacz specyfikację Shared MIME-info Database, aby uzyskać więcej informacji. W konsekwencji Wzorce kluczy (różne rozszerzenia nazw plików związane z typem MIME) i DefaultApp (domyślna aplikacja związana z tym typem MIME) również są nieaktualne.

Specyfikacja źródłowego wpisu pulpitu

Można również użyć symboli wieloznacznych dla typów MIME w IIS, ale zaleca się nie to zrobić:

Można również skonfigurować usługi IIS do obsługi niezdefiniowanych typów plików, dodając symbol MIME ze znakiem zastępczym (*).

Nie używaj symboli wieloznacznych typu MIME na serwerach produkcyjnych. Może to spowodować, że usługi IIS będą wyświetlać nierozpoznane pliki i wyświetlać poufne informacje użytkownikom.

Symbole wieloznaczne typu MIME są przeznaczone do testowania lub w scenariuszach, w których filtry API serwera internetowego (ISAPI) zostały opracowane specjalnie do obsługi tych scenariuszy wieloznacznych, na przykład niestandardowy ISAPI uwierzytelniania.

Źródło Tworzenie globalnych typów MIME


Dalsza lektura

DavidPostill
źródło
Czy to oznacza, że ​​istnieje typ MIME dla wielu plików graficznych - nie wszystkie, ale wiele, więc można go użyć do moich celów bez potrzeby określania pojedynczych rozszerzeń / mimów plików?
2
@cipricus Nie ma jednego, content-type/subtype który obejmowałby wiele formatów obrazów.
DavidPostill
@cipricus Odpowiedź zaktualizowana w celu uwzględnienia Twojego komentarza.
DavidPostill
jak wskazano w komentarzu pod moim pytaniem, image/*działa w celu wskazanym w moim pytaniu, nawet w przypadku svgplików - to znaczy jako wpis na pulpicie MimeType=image/*.
Może to działać, ale zgodnie ze specyfikacją Desktop Desktop Entry - „ Type=MimeTypejest przestarzałe, ponieważ istnieje teraz nowy standard, zobacz specyfikację Shared MIME-info Database, aby uzyskać więcej informacji. W konsekwencji Wzorce kluczy (różne rozszerzenia nazw plików powiązane z Typ MIME) i DefaultApp (domyślna aplikacja skojarzona z tym typem MIME) również są przestarzałe. ”
DavidPostill
2

Zgodnie z tym SO-Answer nie ma ogólnego typu MIME. Problem polega na tym, że typ MIME zawsze składa się z typu, podtypu i opcjonalnego parametru: Type/Subtype; Parameter(patrz tutaj ). Chcesz tylko użyć tego typu, ale z definicji wymagany jest podtyp i nie ma podtypu ogólnego. Listę wszystkich typów obrazów można znaleźć tutaj .

Jrast
źródło
Co dziwne, ta lista „wszystkich” typów obrazów ma puste gifi jpeg, podczas gdy ta lista sitepoint.com/web-foundations/mime-types-complete-list pokazuje, że są image/gifi image/jpegodpowiednio.
user664833,