input[file]標(biāo)簽的accept屬性可用于指定上傳文件的MIME類型。
例如毁欣,想要實現(xiàn)默認上傳圖片文件的代碼卒密,代碼可如下:
<input type="file" name="file" class="element" accept="image/*">
效果如下圖所示缀台,默認過濾掉所有非圖片文件:
只能選擇圖片
但是!
這段代碼在Chrome和Safari等Webkit瀏覽器下卻出現(xiàn)了響應(yīng)滯慢的問題哮奇,可能要等 6~10s 才能彈出文件選擇對話框膛腐。簡直不能忍呀。
在IE和Firefox中使用 accept="image/*" 屬性則沒有發(fā)現(xiàn)響應(yīng)延遲的問題鼎俘。
于是幾經(jīng)嘗試后哲身,發(fā)現(xiàn)是 accept="image/*" 屬性的問題,刪掉它或者將 * 通配符修改為指定的MIME類型贸伐,就可以解決Webkit瀏覽器下的對話框顯示滯慢的問題勘天。
解決辦法如下:
<input type="file" accept="image/gif,image/jpeg,image/jpg,image/png,image/svg">
accept="image/*" 屬性會對每一個文件都遍歷一次所有的”image/*”文件類型,當(dāng)文件較多時捉邢,文件的檢驗時間較長脯丝,這可能是Webkit的底層實現(xiàn)的bug。
另外伏伐,accept="audio/*" 和 accept="video/*" 屬性 在 Webkit瀏覽器下也會有同樣的響應(yīng)延遲的問題宠进。同理,通過將 * 通配符 修改成指定的MIME類型就可解決藐翎。