百分求救,下载文件的页面不能被左面的链接调用了?
页面有左右两个框架,左边是导航条,点击导航条上的按钮,相应的页面显示在右边。
但是现在碰到的问题是:如果右边是一个文件下载页面,当我点击下载链接调用download.jsp下载文件成功后(没有使用弹出新页面的方式,即没有使用target="_blank",这是客户需求),再点击左边导航条的其它按钮想跳到其它页面,右边无法显示相应的页面。
从程序运行打印的日志来看,下载文件完成后点击其它按钮时调用的servlet程序已经成功执行,只是页面跳转时,新的页面显示不了,如果将文件下载页面刷新一下就好了。
怀疑是页面输出流发生了改变的原因,但是却不知道如何解决。请问一下有没有高手碰到并且解决过这个问题,万分感谢!!!!!!
我的下载程序是这样写的:
try{
response.reset();
response.setHeader("content-disposition",
"attachment;filename=" +
toUtf8String(fileName)); //fileName是在前面取得的文件名称,可以含中文
// 通用下载程序
java.io.FileInputStream f = new java.io.FileInputStream(file); 其中的file是文件的绝对路径,在前面的程序获得,比如C:\aa.txt
java.io.OutputStream o = response.getOutputStream();
int bufSize = 2 * 100 * 1024;
byte[] buf = new byte[bufSize];
int ret;
while (true) {
ret = f.read(buf);
if (ret != bufSize) {
o.flush();
o.write(buf, 0, ret);
break;
}
else {
o.write(buf);
}
o.flush();
}
o.flush();
f.close();
}
catch (Exception ex) {
System.out.println("DownLoadFileError : " + ex.toString());
throw ex;
}
//对文件进行编码转换的方法
public static String toUtf8String(String s) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c >= 0 && c <= 255) {
sb.append(c);
}
else {
byte[] b;
try {
b = Character.toString(c).getBytes("utf-8");
}
catch (Exception ex) {
System.out.println(ex);
b = new byte[0];
}
for (int j = 0; j < b.length; j++) {
int k = b[j];
if (k < 0) {
k += 256;
}
sb.append("%" + Integer.toHexString(k).
toUpperCase());
}
}
}
return sb.toString();
}
问题点数:0、回复次数:0Top




