2009-10-10 74 views

回答

0

不與HTML文件控制,沒有。 Flash文件上傳器可以爲你做到這一點。您可以使用一些客戶端代碼在選擇後檢查PDF擴展名,但不能直接控制它們可以選擇的內容。

2

沒有辦法做到這一點以外的驗證與JavaScript文件擴展名,當輸入路徑由文件選擇填充。爲了實現更好的效果,你需要爲你想要的任何瀏覽器編寫你自己的組件(activeX或者XUL)

HTML4.01中有一個「accept」屬性,但我不知道任何支持它的瀏覽器 - accept="image/gif,image/jpeg - 所以它是一個整潔,但不切實際的規範

+0

+1。此外,Chrome現在支持這一點。我讀到Opera已經支持了很長時間,但我沒有檢查它。 – ANeves 2011-11-04 14:02:02

1

它可能是有用的,以防止分心的用戶做出不由自主的不好的選擇,但無論如何,你必須在服務器端進行檢查。
最好的方法是在上傳頁面中清楚。之後,如果用戶愚蠢地上傳錯誤類型的大文件,那是他們的時間損失,不是嗎?

34

要獲取HTML file輸入表單元素只接受PDF文件,可以使用在現代瀏覽器如Firefox 9+,鉻16 +,11 +歌劇和IE10 +像這樣的accept屬性:

<input name="file1" type="file" accept="application/pdf" />

您可以用逗號將多個MIME類型串在一起。

以下字符串將接受JPG,PNG,GIF,PDF,以及EPS文件:

<input name="foo" type="file" accept="image/jpeg,image/gif,image/png,application/pdf,image/x-eps" />

舊版瀏覽器的原生操作系統文件對話框不能限制 - 你必須使用Flash或一個Java applet或類似的東西來處理文件傳輸。

當然不用說,這沒有做任何事情來驗證文件類型有效性。一旦文件上傳,您就可以在服務器端執行此操作。

一個小更新 - 使用JavaScript和FileReader API你可以上傳大文件到您的服務器,並再次檢查他們之前做更多的驗證客戶端。

1

以前的海報犯了一個小錯誤。 accept屬性只是一個顯示過濾器。在提交之前,它不會驗證您的輸入。

此屬性強制文件對話框僅顯示所需的MIME類型。 但用戶可以覆蓋該過濾器。他可以選擇並查看當前目錄中的所有文件。通過這樣做,他可以選擇任何具有任何擴展名的文件,並提交表單。

因此,要回答原始海報,NO。您不能通過使用HTML將輸入文件限制爲一個特定的擴展名。

但是您可以使用javascript來測試在提交之前選擇的文件名。只需在您的提交按鈕上插入一個onclick屬性並調用將測試輸入文件值的代碼即可。如果擴展名被禁止,您必須返回false才能使表單無效。您甚至可以使用jQuery自定義驗證程序等來驗證表單。

最後,您還必須在服務器端測試擴展。 關於允許的最大文件大小的相同問題。

相關問題