文件下载问题!---(顶者有分)

zeq258 2005-11-11 10:42:33
我用jspSmartUpload组件进行文件的下载。
文件代码如下:

fileDownLoad.jsp
---------------------------------------------------
<%@ page contentType="text/html;charset=gb2312" import="com.jspsmart.upload.*" %><%
String fileName=(String)request.getParameter("fileName");
// 新建一个SmartUpload对象
SmartUpload su = new SmartUpload();
// 初始化
su.initialize(pageContext);
// 设定contentDisposition为null以禁止浏览器自动打开文件,
//保证点击链接后是下载文件。若不设定,则下载的文件扩展名为
//doc时,浏览器将自动用word打开它。扩展名为pdf时,
//浏览器将用acrobat打开。
su.setContentDisposition(null);
// 下载文件
su.downloadFile("/upload/"+fileName);
// su.downloadFile("/upload/test.txt");
%>


--------------------------------------------
现在的问题是,如果我的文件是 pdf .jpeg .asf 等,非文本格式。
那么可以下载下来,但是后台会出现错误:
java.lang.IllegalStateException: getOutputStream() has already been called for this response


如果文件是.text , .doc 等文本格式。那么同样会报这样的错误,但是下载不下来。

-----------------------------------------------------------
我在网上找了资料,说这个问题是,由于java代码的两个 %> 和 <%之间有其他的符号,比如空格,或者回车。
可是我已经改了,怎么还是出现这样的问题。请大家指点。
...全文
294 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zeq258 2005-11-11
  • 打赏
  • 举报
回复
的确,用servlet来实现,就没有问题了,谢谢各位!
yyouyou 2005-11-11
  • 打赏
  • 举报
回复
我的初始化是这样的
su.initialize(config, request, response);
su.setContentDisposition(null);
试一试?
libin53 2005-11-11
  • 打赏
  • 举报
回复
放在servlet中就不会了,好象是头的问题, 我之前也遇到过,
zeq258 2005-11-11
  • 打赏
  • 举报
回复
yxhzj(余华[学习J2EE中]) ,谢谢你的建议,我先试下!
fashchina 2005-11-11
  • 打赏
  • 举报
回复
通过的:
<%@ page contentType="text/html;charset=GBK" language="java" %><%@ page import="com.jspsmart.upload.*" %><jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload"/><%mySmartUpload.initialize(pageContext);mySmartUpload.setContentDisposition(null);request.setAttribute("name","sql_wenti.TXT");String name = request.getAttribute("name").toString();mySmartUpload.downloadFile("D:/sql_wenti.TXT"); %>


通过另外方法:

<%@ page contentType="text/html; charset=gb2312" %>
<%
String filename ="rewrite.log";//文件名字
String filepath = "d:/rewrite.log";//绝对的文件路径
response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition","attachment; filename=\"" + filename + "\"");
java.io.FileInputStream inStream =new java.io.FileInputStream(filepath);
byte[] b = new byte[1024];
int len;
while((len=inStream.read(b)) >0)
response.getOutputStream().write(b,0,len);
response.getOutputStream().close();
inStream.close();
%>

zeq258 2005-11-11
  • 打赏
  • 举报
回复
现在问题变了,什么文件都可以下载了,可是错误还是在!
fashchina 2005-11-11
  • 打赏
  • 举报
回复
是这样,你可以把上面的代码放在servlet里面实现

81,092

社区成员

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

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