1

文章出处: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文件,且是内部使用,先用第二种解决,接下来看看有没有什么切实有效的方法。

前端老王
38 声望1 粉丝

学习使我快乐