2011-12-24 82 views
0

有沒有什麼方法可以在下載文件之前識別MIME類型的文件(只有在知道URL時)? 例如,如果我想僅爲某些特定類型顯示我的上下文菜單項。或者,應根據下載類型更改下載屏幕。如何在下載之前獲取文件的MIME類型?

回答

1

您可以使用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類型的唯一方法是開始下載。

+0

謝謝,弗拉基米爾。在顯示下載窗口之前,FF是否開始下載文件?上面的代碼無法檢測MIME類型,但FF顯示鏈接正確 - http://dl.rutracker.org/forum/dl.php?t=3272931。 – 2012-01-07 20:33:57

+0

是的,Firefox首先下載 - 否則它甚至不知道它需要顯示下載窗口。 – 2012-01-07 22:06:13

+0

如何在我的擴展中執行相同操作(開始下載以檢測MIME類型,然後停止它)?是否有任何示例要檢查? – 2012-01-08 06:53:56