2013-12-13 71 views
1

我只需要爲html文件字段設置特定的文件擴展名。如何在html文件類型中設置自定義擴展

<input type="file" id="image1" accept=".jpg,.png,.gif" /> 

從上面的代碼工作良好,但它也顯示所有類型和其他的一些推廣

,但我想禁用或不顯示extention列表。

能否請你幫我,我怎麼能解決這個問題

感謝

回答

0

你不應該寫在接受屬性的擴展。相反,你應該使用MIME類型:

<input type="file" id="image1" accept="image/jpeg,image/gif,image/png" /> 

即使這樣,你可能會得到對話框中的「所有文件」。事情就是這樣 - 如果你真的關心擴展,你將不得不檢查服務器。當然,在實踐中,您可能需要檢查內容而不是擴展名(可以隨意更改)。

+0

這是不正確的。 http://www.w3.org/TR/html5/forms.html#file-upload-state-(type=file)。您可以指定文件類型或MIME類型或兩者。 –

+0

我知道這件事,但我也想禁用對話框打開部分中​​的「所有數據類型」。我想顯示我的自定義延伸。 – harshboss

+0

@harshboss:對不起,你被卡住了。但是,您可以在JavaScript中驗證文件名 - 在提交按鈕上,檢查輸入文件名,並說您只能上傳* .wtv。 – Luaan

1

你不能,你也不想。

您應該總是確保用戶上載的數據在服務器端以所需的格式存在。在客戶端指定文件擴展名非常棒,因爲它可以讓用戶知道他們應該上傳哪些文件,但實際上並沒有什麼能夠阻止某人將其「scaryvirus.exe」文件的名稱和擴展名更改爲無害的文件,如「cutekitten巴紐」。你永遠不應該信任用戶的輸入。

input[type="file"] section of the HTML5 specification

擴展往往含混不清(例如有使用修改「.dat」擴展格式的無數,而用戶通常可以很容易地重新命名他們的文件有「 .doc「擴展名,即使它們不是Microsoft Word文檔),MIME類型往往是不可靠的(例如,許多格式沒有正式註冊類型,實際上許多格式使用多種不同的MIME類型標記)。提醒作者,像往常一樣,應該謹慎對待從客戶那裏收到的數據,因爲即使用戶不是敵對的,並且用戶代理完全服從了接受屬性的要求,它也可能不是預期的格式。

規範沒有定義刪除「所有文件」或其他選項可能出現在用戶代理的文件上傳UI中的能力。也就是說,並不是所有的用戶代理都會支持accept屬性。

相關問題