文章出处:http://www.jianshu.com/p/be34…
最近项目中有一个文件上传的功能,可以上传压缩包文件,遇到一个问题,就是个别电脑点击上传控件时,需要四五秒左右才会有反应。
原因
- 当时在常用的几个浏览器都做了测试,发现这种问题只有chrome出现,然后查看了所有的chrome版本号,怀疑是版本的问题,把所有的版本都升级了,慢的还是一样慢。
- 接着就开始上网查了一下,发现遇到这个问题的人还真多。随便点开一篇文章,原因写的很明白,原来是因为我大天朝的原因导致的。
- chrome会在点击input file的时候,自动请求google服务器,将这些文件的特征提交到海外服务器进行比对,以提醒用户文件是否安全,只有在执行图片类型的时候,chrome不会检车这些文件的安全性。由于我们请求不到google海外服务器,会等到连接诶失败,才会弹出上传文件窗口。
解决方法
- 如果是上传图片,可以在input中添加属性accrpt指定文件类型,比如
accept="image/jpeg"
。 - 如果上传的其他类型,比如zip,rar,pdf之类的,用上面的方法是不管用的,有一个方法就是,在浏览器客户端修改设置,只需要把设置中的一项
保护您和您的设备不受危险网站的侵害
关闭就可以了,此时了浏览器就不会发送请求到google服务器了。但是这种方法需要在客户端操作,问题比较多了。 - 还有一个是在点击的时候讲input的value设置为null,这个没有具体试过。我这里暂时用的是第二种方法,因为要上传的是zip文件,且是内部使用,先用第二种解决,接下来看看有没有什么切实有效的方法。