Did you know ... Search Documentation:
mimetype.pl -- Determine mime-type for a file
PublicShow source

Simple library to guess the mime-type from the extension of a file. As various applications need to do this type ofinferencing it seems worthwhile to place this functionality in an extensible library.

To be done
- Consider content handling (using the Unix file command)
- Allow parameters? (e.g. text/html; charset=UTF-8)
Source file_mime_type(+FileName, -MimeType) is semidet
True when MimeType is the mime-type to be used for sending FileName. The default rules can be overridden and extended using the hook mime:mime_extension/2.
MimeType- is a compound term of the form Type/SubType.
 mime:mime_extension(+Ext, -MimeType) is semidet[multifile]
Hook that is called by file_mime_type/2 before the default table is examined.
Source file_content_type(+File:atom, -ContentType:atom) is det
Source file_content_type(+File:atom, ?MediaType, -ContentType:atom) is det
True if File should be served using ContentType: ContentType. It takes the following steps:
  1. Determine the media type using file_mime_type/2, unless already specified using file_content_type/3.
  2. Determine it is a text file using text_mimetype/1
  3. Use the charset from the Prolog flag default_charset

The behavior is controlled by several hooks and a flag.

  • mime:mime_extension/2 defines the media type
  • text_mimetype/1 defines the media type is text
  • mime:charset/3 derives the charset for a file with a given media type, if the media type is text according to text_mimetype/1.
  • If text_mimetype/1 succeeds and mime:charset/3 fails, the flag default_charset defines the charset unless it is set to -. The flag set by default to UTF-8 if the Prolog flag encoding is set to utf8.
 mime:charset(+File, +MediaType, -Charset) is semidet[multifile]
Hook that determines the Charset for File that has media type MediaType. This hook allows overruling file_content_type/2.
See also
- text_mimetype/1.