快捷搜索: 王者荣耀 脱发

中文文件下载失败的前因后果

    今天是上班的第一天,我因为要治牙病,得以继续留在家中。缩在铺有电热毯的床上工作固然十分享受,但我真的很怀念深圳办公室里25度的春意。
    
    一早就被同事的电话惊醒,第一天啊,就有客户出了问题。客户是检验项目的唯一标准。基于这样的公司理念,我纵然睡意盈然,也要打起万分精神去搞定它。

    问题如下:客户的论坛系统里中文文件名的附件无法下载。我同事们用他们的IE6去测试,确实无法下载,待我连到客户的系统,发现附件的文件名相当长,差不多30个字。但我的IE却可以下载,只不过文件名头部被截断了。

    关于中文文件下载的问题,网上的咨询和答疑已经很多,我原来处理下载的代码如下:
    
    response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));

    下载的程序里有了这句,一般在IE6的下载提示框上将正确显示文件的名字,无论是简体中文,还是日文。不过当时确实没有仔细测试文件名很长的中文文件名。先如今经过仔细测试,发现文字只要超过17个字,就不能下载了。经过好一番google和反复测试,总算对这个问题有了系统的认识,分列如下:

     . 通过我原来的方式,也就是先用URLEncoder编码,当中文文字超过17个时,IE6 无法下载文件。这是IE的bug,参见微软的知识库文章
经验分享 程序员 微信小程序 职场和发展