为什么用Jspsmartupload下载不了txt文件啊?

samue 2004-11-22 11:24:03
我用jspsamrtupload下载文件,象RAR,PDF之类的都能直接下载,但是txt文件就不能下载,这是为什么啊?
提示的错误是:
java.lang.IllegalStateException: getOutputStream() has already been called for this response
org.apache.coyote.tomcat5.CoyoteResponse.getWriter(CoyoteResponse.java:614)
org.apache.coyote.tomcat5.CoyoteResponseFacade.getWriter(CoyoteResponseFacade.java:210)
org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:167)
org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:160)
org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:235)
org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:160)
org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:120)
org.apache.jsp.message.getfile_jsp._jspService(getfile_jsp.java:91)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:170)

...全文
230 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
以梦为马 2005-02-04
  • 打赏
  • 举报
回复
up
pcfan1 2005-02-02
  • 打赏
  • 举报
回复
是com.jspsmart.upload.SmartUpload 文件写的有问题,我在SmartUpload.java文件的downloadFile函数里加了m_response.getOutputStream().close();解决了问题
daly1314 2004-12-02
  • 打赏
  • 举报
回复
您的问题解决了吗
我也是和你一样的问题呀
能不能告诉我你 是怎么解决的
ttoc 2004-11-29
  • 打赏
  • 举报
回复
又试了一次,这次和你的一样,报了异常,结果也没出来

maweihua(laoma) 兄,你说的别留空格行是什么意思呀,好像没太理解~~~
ttoc 2004-11-29
  • 打赏
  • 举报
回复
我和你遇见同样的异常,只不过是我的一切都正常,只是多抛出个异常而已
okitgo 2004-11-29
  • 打赏
  • 举报
回复
代码贴上来
guojiafuzhuxi 2004-11-29
  • 打赏
  • 举报
回复
有这事!我也用过,怎么没出现
kingmaxno1 2004-11-29
  • 打赏
  • 举报
回复
提示说,你两次用了getOutputStream()来得到输出流,所以出错了
maweihua 2004-11-29
  • 打赏
  • 举报
回复
将页面上多余的空格上去掉
老站 2004-11-29
  • 打赏
  • 举报
回复
你试一下一个笨办法,在试图获得响应流前,编写代码不要留有空格空行。我曾经试过这样的问题,是我在删除smartupload上传时产生的临时文件时发生的,删去空格空行后就不会再出现这样的exception
onlyxu 2004-11-22
  • 打赏
  • 举报
回复
下载要用jspsamrtupload做什么?直接链接不就行了
你说的是上传吧
funcreal 2004-11-22
  • 打赏
  • 举报
回复
代码贴上来
galewithwing 2004-11-22
  • 打赏
  • 举报
回复
不是吧?
都差不多的阿
问题在于你是不是试图两次获取响应流?
根据抛出的异常
lijunjiejava 2004-11-22
  • 打赏
  • 举报
回复
你的jsp页面有没有用getOutputStream()方法。
用Servlet试试。jsp在代码执行完之后会自动调用write(String str)方法,这与getOutputStream()方法发生了冲突。
<form action="add_do.jsp" name="formlft" method="post" ENCTYPE="multipart/form-data" check(this)">
date: <input type="text" name="checkdate" size="12" readonly=true></td> type: Record:     
No. ID Reason Remark Status op
1 <input type="text" name="id1" size="8"></TD> <textarea name="reason1" rows="3" cols="14" ></textarea> <textarea name="remark1" rows="3" cols="14" ></textarea> <textarea name="op1" rows="3" cols="10" ></textarea> <input type="file" name="file1" size="10" ></TD>
2 <input type="text" name="id2" size="8"></TD> <textarea name="reason2" rows="3" cols="14"></textarea> <textarea name="remark2" rows="3" cols="14"></textarea> <textarea name="op2" rows="3" cols="10"></textarea> <input type="file" name="file2" size="10" ></TD>
3 <input type="text" name="id3" size="8"></TD> <textarea name="reason3" rows="3" cols="14"></textarea> <textarea name="remark3" rows="3" cols="14"></textarea> <textarea name="op3" rows="3" cols="10"></textarea> <input type="file" name="file2" size="10" ></TD>
 
上传附件: <input type="file" class="bginput" name="attachment_array[]"></td> 
<input type="submit" name="Submit" value="提交"></td> <input type="reset" name="reset" value="重置"></td>
</form> <%@ page import="java.text.*"%> <jsp:useBean id="jdbc" class="com.Jdbc_conn" scope="page" /> <%long today = System.currentTimeMillis(); java.util.Date todayime = new java.util.Date(today); SimpleDateFormat formatter = new SimpleDateFormat("yyMMddHHmmss"); String todaydate = formatter.format(todayime); //新建一个SmartUpload对象 SmartUpload su = new SmartUpload(); //上传初始化 su.initialize(pageContext); //设定上传限制 //1.限制每个上传文件的最大长度。 //su.setMaxFileSize(10000); //2.限制总上传数据的长度。 //su.setTotalMaxFileSize(20000); //3.设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。 //su.setAllowedFilesList("doc,txt"); //4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,jsp,htm,html扩展名的文件和没有扩展名的文件。 su.setDeniedFilesList("exe,bat,jsp,htm,html,,"); //上传文件 su.upload(); //将上传文件全部保存到指定目录 int count = su.save("/upload"); out.println(count+"个文件上传成功!
"); String attachsourcename=""; String newfilename=""; String save=""; for (int j=0;jjspsmart.upload.File file = su.getFiles().getFile(j); // 若文件不存在则继续 if (file.isMissing()) continue; //显示当前文件信息 //另存到操作系统的根目录为文件根目录的目录下 实际的路径 attachsourcename=file.getFileName(); double a=Math.random(); Double d=new Double(a); String s=d.toString(); newfilename=todaydate+s.substring(2,6)+"."+file.getFileExt(); save="D:\\\\Workspace\\\\PM\\\\WebApp\\\\upload\\\\" +newfilename; file.saveAs(save,su.SAVE_PHYSICAL); //out.println(""); //out.println(""); //out.println(""); //out.println(""); //out.println(""); //out.println(""); //out.println(""); //out.println(""); //out.println("
表单项名(FieldName)"+ file.getFieldName() + "
文件长度(Size)" + file.getSize() + "
文件名(FileName)" + file.getFileName() + "
文件扩展名(FileExt)" + file.getFileExt() + "
文件全名(FilePathName)"+ file.getFilePathName() + "
实际路径"+ getServletContext().getRealPath("/") + "
下载 " + file.getFileName() + "

"); //out.println(agvid); } Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url = "jdbc:oracle:thin:@10.20.32.87:1521:XMCSHIS"; String user = "michelle"; String password = "michelle"; Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); try{ for(int i=1;i<=3;i++){ String checkdate=su.getRequest().getParameter("checkdate"); String csttype=su.getRequest().getParameter("csttype"); String cstid=su.getRequest().getParameter("" + "cstid"+i + ""); String reason=su.getRequest().getParameter("" + "reason"+i + ""); String remark=su.getRequest().getParameter("" + "remark"+i + ""); String status=su.getRequest().getParameter("" + "status"+i + ""); String op=su.getRequest().getParameter("" + "op"+i + ""); String reporter=su.getRequest().getParameter("reporter"); if(cstid.equals("")) {break;} String SQL="insert into michelle.Table1(checkdate ,type ,id,reason ,op ,remark ,attachsourcename ,newfilename ,reporter ,status )" +" values('"+checkdate+"','"+type+"',UPPER('"+id+"'),'"+reason+"','"+op+"','"+remark+"','"+attachsourcename+"','"+newfilename+"','"+reporter+"','"+status+"')"; //out.print(SQL); //out.println(11144); //stmt.executeUpdate(SQL); } out.println("保存记录成功!"); } catch(Exception ex){ out.println(" 保存记录失败!Error Info:
"+ex.getMessage()+"


返回上一页"); //out.println("sql.executeUpdate:"+ex.getMessage()); }

81,090

社区成员

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

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