2013-02-21 36 views
0

所以我有一個標準的<input type="file" accept="..."/>其中accept,是不同MIME類型的大列表。 我已經驗證了服務器後端上的文件類型,但我想確定我沒有篩選出客戶端UI上的有效文件。我意識到舊版瀏覽器根本不會過濾文件,這很好。我擔心現代瀏覽器可能無法識別MIME類型並過濾出實際有效的文件。接受屬性中的值是否需要計算機知道MIME類型?

所以我的問題基本上是'accept'屬性有多可靠?例如,如果未安裝Microsoft Office,瀏覽器是否會識別.docx mime類型?此外,某些文件類型有許多不同的可能的MIME類型與它們相關聯,如果我只列出其中一種MIME類型,它是否重要?

我不明白爲什麼規範最初使用MIME類型,它會明顯更簡單,我猜如果他們有第一次使用擴展(如鉻接受)更可靠。

對於我目前用默劇的完整列表:

application/msword, 
application/vnd.openxmlformats-officedocument.wordprocessingml.document, 
application/rtf, 
application/msexcel, 
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, 
application/vnd.openxmlformats-officedocument.spreadsheetml.template, 
application/vnd.ms-excel.template.macroEnabled.12, 
application/vnd.ms-excel.sheet.macroEnabled.12, 
text/csv, 
application/mspowerpoint, 
application/vnd.openxmlformats-officedocument.presentationml.presentation, 
application/vnd.ms-powerpoint.presentation.macroEnabled.12, 
application/vnd.ms-powerpoint, 
application/vnd.openxmlformats-officedocument.presentationml.template, 
application/vnd.openxmlformats-officedocument.presentationml.slideshow, 
application/pdf, 
image/jpg, 
image/jpeg, 
image/png, 
image/bmp, 
image/gif, 
text/plain, 
message/rfc822, 
application/vnd.oasis.opendocument.text, 
application/vnd.oasis.opendocument.spreadsheet, 
application/vnd.oasis.opendocument.presentation, 
application/visio,application/vnd.visio, 
application/vst, 
application/vnd.visio.webdrawing, 
application/x-mspublisher 

回答

1

The specification allows you to use extensions as well as mime types

事實上,它實際上建議您使用 MIME類型和擴展。

至於要求OS識別MIME類型,這是沒有意義的,因爲MIME類型是Internet協議文件標識符。它實際上取決於用戶代理(瀏覽器)對mime類型的支持。由於這是一個相當新的構造,如果瀏覽器只通過MIME類型和擴展之間的通用映射來最小化地「支持」它,我不會感到驚訝。我無法想象瀏覽器試圖統計所有可讀文件來確定MIME類型(根據我的經驗,它甚至不能接近可靠)。 accept的意圖似乎更多地是關於如何改變文件上傳對話框的外觀,我懷疑任何瀏覽器都沒有這樣做,儘管我認爲考慮當今的瀏覽器發佈的速度如何是錯誤的。

如果您仍然擔心,您可以在常見的瀏覽器中測試自己,因爲它看起來應該是每個用戶代理而不是每個操作系統。

相關問題