-
jsp下载文件异常getOutputStream() has already been called for this response5
下面是我的jsp代码<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %> <%@ page contentType="text/html;charset=utf-8" %> <%@ page import="java.io.*" %> <%@ page import="java.net.*" %> <html> <head> <title>download file</title> </head> <body> <% response.setContentType("text/html"); javax.servlet.ServletOutputStream ou = response.getOutputStream(); String filepath = request.getParameter("file_path"); String filename = new String(request.getParameter("filename").getBytes("ISO-8859-1"),"utf-8").toString(); java.io.File file = new java.io.File(filepath + filename); if(!file.exists()) { out.print(file.getAbsolutePath()+" File Not Exist !"); return; } java.io.FileInputStream fileInputStream = new FileInputStream(file); if (filename != null && filename.length() > 0) { response.setContentType("application/x-msdownload"); response.setHeader("Content-Disposition", "attachment; filename=" + new String(filename.getBytes("utf-8"),"ISO-8859-1") + ""); if (fileInputStream != null) { int filelen = fileInputStream.available(); byte[] a = new byte[filelen]; fileInputStream.read(a); ou.write(a); } fileInputStream.close(); ou.close(); } out.clear(); out = pageContext.pushBody(); %> </body> </html>
下面是异常:
严重的: Servlet.service() for servlet jsp threw exception
java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:611)
在网上查了,说加上后面2局就可以,但是我加了也报异常!
请各位帮看下,在线苦等,谢谢!
快没分了,不知道以后没分还能不能提问...2012年8月27日 21:02
2个答案 按时间排序 按投票排序
-
送你个下载demo吧。我测试通过了,没有异常
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %> <%@ page contentType="text/html;charset=utf-8" %> <%@ page import="java.io.*" %> <html> <head> <title>download file</title> </head> <body> <% response.setContentType("text/html"); OutputStream o = response.getOutputStream(); byte b[] = new byte[5000]; File fileLoad = new File("d:/book.doc"); response.setContentType("application/x-msdownload"); response.setHeader("content-disposition", "attachment; filename=book.doc"); long fileLength = fileLoad.length(); String length1 = String.valueOf(fileLength); response.setHeader("Content_Length", length1); FileInputStream in = new FileInputStream(fileLoad); int n; while ((n = in.read(b)) != -1) { o.write(b, 0, n); } in.close(); out.clear(); out = pageContext.pushBody(); %> </body> </html>
//需要修改的地方:
File("d:/book.doc");
filename=book.doc");2012年8月29日 21:51
-
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %><%@ page contentType="text/html;charset=utf-8" %><%@ page import="java.io.*" %><%@ page import="java.net.*" %><% response.setContentType("text/html"); javax.servlet.ServletOutputStream ou = response.getOutputStream(); String filepath = request.getParameter("file_path"); String filename = new String(request.getParameter("filename").getBytes("ISO-8859-1"),"utf-8").toString(); java.io.File file = new java.io.File(filepath + filename); if(!file.exists()) { out.print(file.getAbsolutePath()+" File Not Exist !"); return; } java.io.FileInputStream fileInputStream = new FileInputStream(file); if (filename != null && filename.length() > 0) { response.setContentType("application/x-msdownload"); response.setHeader("Content-Disposition", "attachment; filename=" + new String(filename.getBytes("utf-8"),"ISO-8859-1") + ""); if (fileInputStream != null) { int filelen = fileInputStream.available(); byte[] a = new byte[filelen]; fileInputStream.read(a); ou.write(a); } fileInputStream.close(); ou.close(); } out.clear(); out = pageContext.pushBody(); %>
删除所有空行 和 html 内容,,因为这些元素 其实会调用 getWriter().out()输出的2012年8月27日 22:15
相关推荐
在Java Web开发中,"getOutputStream() has already been called for this response" 是一个常见的错误,通常出现在使用Servlet或JSP时。这个错误意味着在HTTP响应中,`getOutputStream()`已经被调用,然后尝试再次...
1.在tomcat6.0下jsp出现getOutputStream() has already been called for this response异常的原因和解决方法 在tomcat6.0下jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等),没有...
验证码出现getOutputStream() has already been called for this response错误解决
纠结了半天的 java.lang.IllegalStateException: getOutputStream() has already。这个问题困扰了半天,在网上查阅了大量资料 出这个错误一般就是下面2个.....
解决了getOutputStream() has already been called for this response. 并将产生验证码的逻辑从JSP页面中分离出来,单独写了一个类 便于重用。
"Cannot forward after response has been committed" 是一个在Java Web开发中常见的错误,通常与Servlet、Filter或控制器逻辑有关。这个错误表明服务器已经完成了对HTTP响应的处理,并将其发送到客户端,然后试图...
例如,可以使用`response.getOutputStream()`来获取输出流,并通过循环读取文件内容,逐块写入到输出流中。 此外,安全性和性能优化也是文件上传下载中不可忽视的部分。例如,限制文件大小以防止DoS攻击,检查文件...
在Java和JSP中,实现文件下载是一项常见的任务,它涉及到服务器与客户端之间的交互,以及对文件流的处理。下面将详细讲解如何使用Java和JSP来实现这一功能。 首先,我们从`downloadtool.jsp`开始,这是一个用户界面...
本话题关注的是如何在JSP页面上实现文件下载功能,这对于构建一个交互性强、功能丰富的Web应用是至关重要的。以下我们将详细探讨这个主题。 首先,我们需要理解JSP页面的基本结构和工作原理。JSP页面由HTML、CSS、...
### 使用JSP下载Excel文件知识点解析 #### 一、引言 在Web开发中,经常需要将服务器上生成的数据导出为Excel文件供用户下载。本文档将详细介绍如何使用Java Server Pages (JSP) 实现从服务器端下载Excel文件到...
本文将深入探讨如何使用JSP来实现文件的上传和下载功能,这对于构建交互性强的Web应用来说至关重要。 **一、文件上传** 文件上传通常涉及到客户端的表单提交和服务器端的数据处理。在JSP中,我们可以使用HTML的`...
### JSP实现文件下载功能详解 #### 一、引言 在Web开发中,文件下载是一项常见的需求。Java Server Pages(JSP)作为一种强大的服务器端技术,被广泛应用于构建动态网页。本文将详细介绍如何利用JSP实现文件下载...
在这个场景中,"用JSP下载word文件(不会直接用IE打开.rar"的描述表明我们要实现一个功能,即用户点击链接后,JSP页面能够提供Word文件的下载,而不是直接在浏览器中打开文件。这通常涉及到HTTP响应头的设置以及正确...
### jsp页面文件下载功能实现 #### 概述 在Web开发中,文件下载是一项基本且常用的功能。本文将详细介绍如何使用JSP技术实现文件下载功能,并解释代码中涉及的关键概念和技术点。 #### 核心知识点解析 ##### 1. ...
`jspSmartUpload`是一个非常实用的库,它简化了处理文件上传和下载的复杂性。本文将深入探讨如何使用`jspSmartUpload`来实现这两个功能,并详细解释其工作原理和相关知识点。 首先,`jspSmartUpload`是一个基于Java...
在本文中,我们将深入探讨如何使用JSP(JavaServer Pages)和jspSmartUpload库来实现文件的上传与下载功能。JSP是一种动态网页技术,它允许开发者在HTML中嵌入Java代码,从而创建交互式的Web应用程序。而jsp...
1. 设置响应头:在JSP页面中,我们需要使用`response`对象来设置响应头,指示浏览器进行文件下载。如下所示: ```jsp response.setContentType("application/octet-stream"); // 设置Content-Type response.set...
根据给定的信息,本文将详细解释如何利用Java与JSP技术来实现从FTP服务器上传下载文件的功能,并且会对部分给出的代码片段进行解读。 ### Java + JSP 实现 FTP 文件上传下载 #### 一、JSP 页面代码实现 在JSP页面...
本文将深入探讨如何使用Java和JSP(JavaServer Pages)技术实现文件的上传与下载功能。 首先,我们需要理解JSP的基础。JSP是一种基于Java的技术,它允许开发者在HTML页面中嵌入Java代码,以实现动态网页生成。JSP...