为什么下载后的文件会被包装成html文件

xdlq 2005-06-28 05:04:59
通过struts的action传递一个文件到attrubute,在客户端jsp页面中取出此文件下载,jsp页面如下:
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.io.*" %>
<%@ page import="javax.servlet.ServletOutputStream"%>
<%
try {
File file = (File) request.getAttribute("file");
String name=file.getName();
response.reset();
response.setContentType("bin");
//设置文件大小及名称
response.setHeader("Content-Length", new Long(file.length()).toString());
response.setHeader("Content-Disposition", "attachment; filename="+new String(name.getBytes(),"iso8859-1"));
synchronized(out) {
FileInputStream reader=new FileInputStream(file);
out.clearBuffer();
int line=0;
while ((line=reader.read()) !=-1) {
out.write(line);
}
reader.close();
}
}
catch(IOException e) {
}
%>

可是下载得到的文件总是在原文件的基础上加上<html><head> <title>??????????</title>等html标记,而文件的实质内容被放到body里面,这样导致文件无法被打开,请问有哪位老兄知道原因和解决方法?
...全文
228 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xdlq 2005-06-30
  • 打赏
  • 举报
回复
问题解决,我自己在decorators.xml中的路径写错了,汗……
谢谢两位。
xdlq 2005-06-29
  • 打赏
  • 举报
回复
to mofeir(莫飞):
<%@ page contentType="text/html; charset=GBK" %>是用来说明下载文件的jsp页面的,应该对下载的文件没什么影响吧?

to cuixiping(无心):
response中没有clear方法啊,你是不是说的是reset方法?这个我的代码中有的。而且改成response.setContentType("application/octet-stream")之后还是有同样的问题。
cuixiping 2005-06-28
  • 打赏
  • 举报
回复

response.clear(); /* 加上这一句 */
try {
...



response.setContentType("bin");
改为
response.setContentType("application/octet-stream");
mofeir 2005-06-28
  • 打赏
  • 举报
回复
<%@ page contentType="text/html; charset=GBK" %>
这句话决定了是html,呵呵。OVER.

81,117

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧