This is an archived page. It's not actively maintained.

Content sniffer interface. Components implementing this interface can determine a MIME type from a chunk of bytes.
Inherits from: nsISupports Last changed in Gecko 1.9 (Firefox 3)
To implement this interface use net-content-sniffers category. See netwerk/build/nsNetCID.h about  NS_CONTENT_SNIFFER_CATEGORY.

Method overview

ACString getMIMETypeFromContent(in nsIRequest aRequest, [const,array,size_is(aLength)] in octet aData, in unsigned long aLength);



Given a chunk of data, determines a MIME type. Information from the given request may be used in order to make a better decision.

Note: Implementations should consider the request read-only. Especially, they should not attempt to set the content type property that subclasses of nsIRequest might offer.

ACString getMIMETypeFromContent(
  in nsIRequest aRequest,
  [const,array,size_is(aLength)] in octet aData,
  in unsigned long aLength
The request where this data came from. May be null.
Data to check.
Length of the data.
Return value

The content type.


How to read content from aData.

    let charset = "ISO-8859-1";
    try {
      // this pref has been removed, see Bug 910192
      charset = Services.prefs.getComplexValue("intl.charset.default",
    } catch (e) {

    let conv = Cc["@mozilla.org/intl/scriptableunicodeconverter"]
    conv.charset = charset;
    try {
      let str = conv.convertFromByteArray(aData, aLength);
      if (str.substring(0, 5) == "%PDF-")
        return "application/pdf"; // we detected a pdf file
    } catch (e) {
      // try to get information from aRequest

See also