0
有没有什么方法可以在下载文件之前识别MIME类型的文件(只有在知道URL时)? 例如,如果我想仅为某些特定类型显示我的上下文菜单项。或者,应根据下载类型更改下载屏幕。如何在下载之前获取文件的MIME类型?
有没有什么方法可以在下载文件之前识别MIME类型的文件(只有在知道URL时)? 例如,如果我想仅为某些特定类型显示我的上下文菜单项。或者,应根据下载类型更改下载屏幕。如何在下载之前获取文件的MIME类型?
您可以使用nsIMIMEService.getTypeFromURI()
从文件扩展名中获取MIME类型,它将从文件扩展名中获取MIME类型。沿着这些线路:
var uri = Components.classes["@mozilla.org/network/io-service;1"]
.getService(Components.interfaces.nsIIOService)
.newURI("http://example.com/test.gif", null, null);
var mimeService = Components.classes["@mozilla.org/mime;1"]
.getService(Components.interfaces.nsIMIMEService);
var mime = mimeService.getTypeFromURI(uri);
当然,这是没有什么接近可靠 - MIME类型的URL可以是任何东西,text.gif
可以是HTML页面或SVG图像或其他任何东西。所以获得MIME类型的唯一方法是开始下载。
谢谢,弗拉基米尔。在显示下载窗口之前,FF是否开始下载文件?上面的代码无法检测MIME类型,但FF显示链接正确 - http://dl.rutracker.org/forum/dl.php?t=3272931。 – 2012-01-07 20:33:57
是的,Firefox首先下载 - 否则它甚至不知道它需要显示下载窗口。 – 2012-01-07 22:06:13
如何在我的扩展中执行相同操作(开始下载以检测MIME类型,然后停止它)?是否有任何示例要检查? – 2012-01-08 06:53:56