2017 年 7 月更新:这被确认为bug https://bugs.chromium.org/p/chromium/issues/detail?id=638874在 Chrome 中,它是fixed https://chromium-review.googlesource.com/c/514582/ now.
这个bug的根本原因是:Chrome的安全浏览功能将在上传或保存时检查文件。如果到谷歌服务器的互联网连接速度很快,那就没问题了。但如果连接速度慢或断线,安全浏览会让 Chrome 挂起几秒钟,直到检查完成或超时。
Using accept="image/png, image/jpeg, image/gif"
将解决此问题,因为 MIME 类型image/png, image/jpeg, image/gif
位于白名单中安全浏览——不需要检查。然而,对于accept="image/*"
or accept=".apk"
,因为它不在白名单中,安全浏览将触发检查并挂起 Chrome。
这个错误已经被fixed https://chromium-review.googlesource.com/c/514582/跳过上传检查。
注:以上信息是我从一位中国人那里得到的article https://zhuanlan.zhihu.com/p/27946188作者:王磊,灵感来自于@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/*">
。这似乎是 Mac 上的 Chrome 错误accept
使用 属性,因为它不会在 Windows 环境或其他浏览器上重现。