nsIContentSniffer

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);

Methods

getMIMETypeFromContent()

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
);
Parameters
aRequest
The request where this data came from. May be null.
aData
Data to check.
aLength
Length of the data.
Return value

The content type.

Example

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",
                                                Ci.nsIPrefLocalizedString).data;
    } catch (e) {
    }
                                                  
    let conv = Cc["@mozilla.org/intl/scriptableunicodeconverter"]
               .createInstance(Ci.nsIScriptableUnicodeConverter);
    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