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