输入['file'] accept ="image/*"打开对话框,Chrome速度很慢

yka*_*kan 10 html google-chrome

当我使用<input type="file" accept="image/*"/>Chrome时,它会非常缓慢地打开对话框(在Mac 10.11.6上使用Chrome 52.0.2743.116 64位时超过10秒).

但是当我删除时accept="image/*",它变得正确.我看看我的Facebook页面,它工作正常.有什么不同?

Facebook输入

使用我的Chrome,Stack Overflow的图片上传也变得非常慢.

堆栈溢出

我的Chrome会发生什么变化?我测试了其他的Chrome,没问题......

sha*_*ncs 15

2017年7月更新:这已被确认为Chrome中的错误,现在已修复.

此错误的根本原因是:Chrome的SafeBrowsing功能将在上传或保存时检查文件.如果与谷歌服务器的互联网连接速度很快,那就没关系.但是,如果连接缓慢或损坏,SafeBrowsing将使Chrome挂起几秒钟,直到检查完成或超时.

使用accept="image/png, image/jpeg, image/gif"将解决此问题,因为MIME类型image/png, image/jpeg, image/gif位于SafeBrowsing的白名单中 - 不需要检查.但是,对于accept="image/*"accept=".apk",因为它不在白名单中,SafeBrowsing将触发检查并挂起Chrome.

通过跳过上传检查修复了此错误.

注意:我从王磊撰写的中文文章中获得了上述信息,受到@ cute_ptr答案的启发.感谢王磊和我认为@ cute_ptr的答案值得一提.


更新:感谢@ xiefei的评论,最终的解决方法是: <input type="file" name="imgFile" accept="image/png, image/jpeg, image/gif">.如有必要,可以附加其他图像MIME类型.


这个错误在我的机器上重现:Mac + Chrome + <input type="file" accept="image/*">.在accept使用属性时,它似乎是Mac上的Chrome错误,因为它不会在Windows环境或其他浏览器上重现.