2009-11-16 103 views
5

有誰知道如何在輸入標籤中使用accept屬性?我可以看到它的記錄,但w3schools表明它不支持任何主流瀏覽器。測試也證實了這一點。爲什麼主要瀏覽器不支持input type =「file」的HTML ACCEPT屬性?

我知道驗證應該在服務器端完成,我現在正在做。但是,爲了便於使用,可以限制文件上傳對話框中的文件類型。

編輯:我完全知道客戶端唯一驗證的安全含義。我不打算刪除服務器端驗證,並正在尋找提高可用性的方法。

+1

即使它被支持,這也不會使您無法驗證服務器端的輸入。 – Gumbo 2009-11-16 18:32:23

+2

+1可用性!等待40秒才能上傳的東西只能被告知它不夠好,並不是最好的用戶體驗。 – Rob 2009-11-16 18:55:48

+0

實際上,大多數主流瀏覽器都支持該屬性,因爲它們會過濾文件選取器對話框中顯示的文件類型。但是,通過更改文件擴展名來解決它很簡單,所以您仍然需要檢查服務器端。 – 2017-01-19 04:29:50

回答

3

瀏覽器沒有實際實現ACCEPT屬性的原因是,MIME類型驗證是一門科學,並不像讀取文件擴展名一樣簡單。爲的頁面注意即使服務器端的MIME類型的驗證是很困難的:

http://www.mediawiki.org/wiki/Manual:Mime_type_detection

通知他們嘗試驗證MIME類型,即使服務器端。

0

支持這個標籤意味着實現一種方式讓瀏覽器確定本地資源的MIME類型,這會產生大量的啓發式和可能暴露於代碼注入和/或其他漏洞,瀏覽器已經擁有他們的公平份額。

1

最迂腐的原因是,它不是required by的HTML4規範(重點煤礦):

該屬性指定用逗號分隔的內容類型的服務器處理這個表單會正確處理的列表。用戶代理可能使用此信息在提示用戶選擇要發送到服務器的文件時過濾掉不符合的文件。

這是一個可選功能。

我個人很喜歡看到這個。例如,當給出image/*時,瀏覽器可以將用戶的照片庫作爲默認位置並使用大圖標。 text/*可能會轉到文檔文件夾等。移動瀏覽器(例如iPhone)通常不允許文件上傳,可以在表單預期圖像時使用它來調出圖庫。如果需要,我們可能會變得瘋狂並連接到掃描儀。可能性是無止境。

但是,此功能並不常用,而且根據網站支持的文件上傳對話框的不同,它可能會非常混亂。

相關問題