日期:2014-05-20  浏览次数:20681 次

xls文件可以下载不能打开
服务器上的一个中文文件名的文件,我写了一个程序来下载:

response.setHeader( "Content-Disposition ",   "attachment;   filename= "   +   toUtf8(fileName));
response.setContentType( "application/octet-stream ");
测试的时候,IE会弹出对话框并有三个按钮:“[打开]、[保存]、[取消]”。点保存的话,文件名没有任何问题,没有乱码。
如果点打开,则会说文件名不对,因为文件名全是%E4%8F...%6F.xls。
我感觉好像直接打开的话,文件名的utf-8编码没有转成合适的编码。



------解决方案--------------------
文件名应该是加密过的了,你必须解密回来,因为如果文件名中文的话,http发送会有错误,所以一般把文件名加密.
------解决方案--------------------
由于中文文件名的原因。
我在做文件下载时,一般将文件转成流输出到客户端。
------解决方案--------------------
直接用中文有什么问题?
------解决方案--------------------
看错了,以为是httpclient传送数据.
建议调试一下 filename 及 toUtf8(fileName) 的值.
特别是toUtf8函数的代码,可能对文件名加密了.
------解决方案--------------------
toUtf8 应该是自己写的函数吧?
------解决方案--------------------
fileName = URLEncoder.encode(fileName, "UTF-8 ");//用这个控制文件名的乱码问题

response.setContentType( "application/x-msdownload;charset=UTF-8 ");
response.setHeader( "Content-Disposition ", "attachment; filename= "
+ fileName);

这么写头试试