All predicatesShow -- Determine mime-type for a file

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 default_mimetype(-MimeType) is semidet[private]
If the mime-type cannot be determined from the file extension, this predicate is used as fallback. It takes the value from the Prolog flag default_mimetype. To change the default, use e.g.,
:- set_prolog_flag(default_mimetype, text/plain).

The initial default mime-type is application/unknown. Use the value - to denote there is no default.

Source ext_mimetype(+Extension, -MimeType) is semidet[private]
Built-in table of file-name extension to mime-type mappings.
To be done
- Update this list, e.g., from
Source name_mimetype(+DownCaseFileName, -MimeType) is semidet[private]
Determine the mime-type of files based on the entire filename.
Source text_mimetype(+MimeType) is semidet[private]
True when documents of MimeType are text documents and thus may need a charset specification.
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.

Undocumented predicates

The following predicates are exported, but not or incorrectly documented.

Source file_content_type(Arg1, Arg2, Arg3)