于是我在连接到下载程序的页面时进行了URL编码:
URL.Encoder.encode(name,"UTF-8");
然后在下载程序页面进行解码:
URL.Decoder.decode(name,"UTF-8");
程序如下:
<%
String root = application.getRealPath("/");
String name = request.getParameter("name");
response.setContentType("unknown");
response.addHeader("Content-Disposition", "filename=\"" + name + "\"");
try
{
java.io.OutputStream os = response.getOutputStream();
java.io.FileInputStream fis = new java.io.FileInputStream(root +"UpFiles\\"+ java.net.URLDecoder.decode(name,"UTF-8"));
byte[] b = new byte[1024];
int i = 0;
while ( (i = fis.read(b)) > 0 )
{
os.write(b, 0, i);
}
fis.close();
os.flush();
os.close();
}
catch ( Exception e )
{
}
%>
这样是可以下带中文名的文件了,但是文件名里的空格变成了+,我知道这是URL编码的原因,但我想知道怎么样弄才能将空格变回来,别告诉我用字符串的处理方法来弄。
谢谢各位!!!!!!!!!!!
URL.Encoder.encode(name,"UTF-8");
然后在下载程序页面进行解码:
URL.Decoder.decode(name,"UTF-8");
程序如下:
<%
String root = application.getRealPath("/");
String name = request.getParameter("name");
response.setContentType("unknown");
response.addHeader("Content-Disposition", "filename=\"" + name + "\"");
try
{
java.io.OutputStream os = response.getOutputStream();
java.io.FileInputStream fis = new java.io.FileInputStream(root +"UpFiles\\"+ java.net.URLDecoder.decode(name,"UTF-8"));
byte[] b = new byte[1024];
int i = 0;
while ( (i = fis.read(b)) > 0 )
{
os.write(b, 0, i);
}
fis.close();
os.flush();
os.close();
}
catch ( Exception e )
{
}
%>
这样是可以下带中文名的文件了,但是文件名里的空格变成了+,我知道这是URL编码的原因,但我想知道怎么样弄才能将空格变回来,别告诉我用字符串的处理方法来弄。
谢谢各位!!!!!!!!!!!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货