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

时间:2016-08-28 03:52:57

标签: html web-frontend

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

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

Facebook input

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

Stack Overflow

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

3 个答案:

答案 0 :(得分:15)

2017年7月更新:这已在Chrome中确认为bug,现在为fixed

此错误的根本原因是: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。

此错误已由fixed跳过检查上传。

注意:我从王磊撰写的中文article获得上述信息,感谢@ 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环境或其他浏览器上重现。

答案 1 :(得分:1)

我想我可能已经找到了原因,至少在我的机器上找到了原因:

当我的互联网连接打开时,它会快速打开文件对话框,当我将其关闭时,它很慢,然后我再次打开它再次快速。

因此,请在打开互联网连接时尝试打开文件对话框,看看是否有任何差异。它对我有用。

答案 2 :(得分:0)

从最佳答案中,我们知道这是一个铬虫并准备好修复。直到今天(2017/08/23),chrome 60.0.3112.101还没有修复这个bug。然而最新的镀铬金丝雀(62.0.3194.0)修复了它。