如何让浏览器下载txt文件,而不是通过浏览器直接打开浏览来,而是弹出下载的对话框来。

good_good 2004-12-27 01:15:55
如何让浏览器下载txt文件,而不是通过浏览器直接打开浏览来,而是弹出下载的对话框来。


如何让浏览器下载txt文件,而不是通过浏览器直接打开浏览来,而是弹出下载的对话框来。
...全文
2720 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
grapepaul 2004-12-31
  • 打赏
  • 举报
回复
晕啊,问题再说清楚一点,如果只是name动态的话,那太简单了;
filename = <%=name%>,你还是说你客户的要求吧
虎叔 2004-12-28
  • 打赏
  • 举报
回复
把name改成你自己的文件名不可以嘛
krjzz 2004-12-28
  • 打赏
  • 举报
回复
把问题说清楚
good_good 2004-12-28
  • 打赏
  • 举报
回复
没人回答吗
good_good 2004-12-28
  • 打赏
  • 举报
回复
不行啊,我试了啊,
直接加这个,是根本不行;
response.setContentType("Application/X");




response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition",
"attachment; filename=name.txt");

加了这个就弹出下载name.txt,而且我的是动态生成的文件名
debug148 2004-12-28
  • 打赏
  • 举报
回复
mark
bzg520 2004-12-28
  • 打赏
  • 举报
回复
呵呵!借宝地一用!一个给新手学习和讨论JAVA的群8004940 欢迎广大JAVA爱好者加入此群,不论你是JAVA初学者,还是即将开始学习JAVA的,只要你热爱JAVA 那么就别犹豫了加入此群让我们共同进步,也强烈欢迎愿意帮助并指点新人的高手进入,所有热爱JAVA的人都将十分感激您的帮助
Yansharp 2004-12-28
  • 打赏
  • 举报
回复
getOutputStream() has already been called for this response
good_good 2004-12-28
  • 打赏
  • 举报
回复
org.apache.jasper.JasperException: getOutputStream() has already been called for this response
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
怎么报这个错误,我的下载地址,都是填对了的啊
good_good 2004-12-28
  • 打赏
  • 举报
回复
我这su.downloadFile路径都对,还报
org.apache.jasper.JasperException: getOutputStream() has already been called for this response
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
ThornBird313 2004-12-28
  • 打赏
  • 举报
回复
新建一个页面down.jsp:
<%
java.lang.String filename = request.getParameter("filename");
java.lang.String filepath = getServletContext().getRealPath("/") + "reports/";
response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition","attachment;filename=\"文本文件.txt\"");
java.io.FileInputStream fileInputStream = new java.io.FileInputStream(filepath + filename);
int i;
while ((i=fileInputStream.read()) != -1) {
out.write(i);
}
fileInputStream.close();
out.close();
%>

然后在超链接处这样写:
<a href="down.jsp?filename=<%=strFileName%>"><%=strFileName%></a>
jcw2016 2004-12-28
  • 打赏
  • 举报
回复
这个地址有问题:http:/10.0.0.120/iLinkcard/carddown/2004-12-28-1-1-0847.txt
应该是:http://10.0.0.120/iLinkcard/carddown/2004-12-28-1-1-0847.txt
然后仔细检查一下这个文件在相应的物理路径下是否存在。错误信息里就是说"找不到这个文件",要么是地址有问题,要么就是文件不存在
good_good 2004-12-28
  • 打赏
  • 举报
回复
http:/10.0.0.120/iLinkcard/carddown/2004-12-28-1-1-0847.txt
~~~~~这样行吗?是不是缺少一个“/”
我没哪有/啊

楼上的,你是下载的xls啊,我用的是文本文件,我要怎么配置http头啊
ThornBird313 2004-12-28
  • 打赏
  • 举报
回复
新建一个页面down.jsp:
<%
java.lang.String filename = request.getParameter("filename");
java.lang.String filepath = getServletContext().getRealPath("/") + "reports/";
response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition","attachment;filename=\"Excel报表.xls\"");
java.io.FileInputStream fileInputStream = new java.io.FileInputStream(filepath + filename);
int i;
while ((i=fileInputStream.read()) != -1) {
out.write(i);
}
fileInputStream.close();
out.close();
%>

然后在超链接处这样写:
<a href="down.jsp?filename=<%=strFileName%>"><%=strFileName%></a>
Yansharp 2004-12-28
  • 打赏
  • 举报
回复
http:/10.0.0.120/iLinkcard/carddown/2004-12-28-1-1-0847.txt
~~~~~这样行吗?是不是缺少一个“/”

good_good 2004-12-28
  • 打赏
  • 举报
回复
但实际下我输入地址http:/10.0.0.120/iLinkcard/carddown/2004-12-28-1-1-0847.txt是可以下载的
good_good 2004-12-28
  • 打赏
  • 举报
回复
我试了,他报:
type Status report

message http:/10.0.0.120/iLinkcard/carddown/2004-12-28-1-1-0847.txt (No such file or directory)

description The requested resource (http:/10.0.0.120/iLinkcard/carddown/2004-12-28-1-1-0847.txt (No such file or directory)) is not available.


或者报:
org.apache.jasper.JasperException: getOutputStream() has already been called for this response
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:163)


jcw2016 2004-12-28
  • 打赏
  • 举报
回复
用google搜索一下,可以找到很多相关资料
jcw2016 2004-12-28
  • 打赏
  • 举报
回复
用jspsmartupload来下载这个文件。
JSP源代码如下:
<%@ page contentType="text/html;charset=gb2312"
import="com.jspsmart.upload.*" %><%
// 新建一个SmartUpload对象
SmartUpload su = new SmartUpload();
// 初始化
su.initialize(pageContext);
// 设定contentDisposition为null以禁止浏览器自动打开文件,
//保证点击链接后是下载文件。若不设定,则下载的文件扩展名为
//doc时,浏览器将自动用word打开它。扩展名为pdf时,
//浏览器将用acrobat打开。
su.setContentDisposition(null);
// 下载文件
su.downloadFile("/upload/xxx.doc");
%>

注意,执行下载的页面,在Java脚本范围外(即<% ... %>之外),不要包含HTML代码、空格、回车或换行等字符,有的话将不能正确下载。不信的话,可以在上述源码中%><%之间加入一个换行符,再下载一下,保证出错。因为它影响了返回给浏览器的数据流,导致解析出错。

good_good 2004-12-28
  • 打赏
  • 举报
回复
不是啊,客户就要求我这样做啊,真是累死了,各位有没有好办法,就是让浏览器支持下载TXT文件
加载更多回复(6)

81,122

社区成员

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

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