txt文件下载,很多人问过,但是...

poiunet 2008-01-03 01:55:30
<a href="s.txt">txt1</a>
大概就是这样,IE直接打开了,怎么让它被下载啊,
改成
<mime-mapping>
<extension>txt</extension>
<mime-type>application/msword</mime-type>
</mime-mapping>
之类文件扩展名就变了,改成<mime-type="text/plain"/>跟没改一样,
因为地址是从库里读出来的,地址不固定也没发用IO流输出.

特此求教各位高人!
...全文
2419 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
tweij 2010-08-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 java2000_net 的回复:]

我有一个方法,可以实现,这里的博克又不能发文章了,气死我了

http://www.java2000.net/viewthread.jsp?tid=179
[/Quote]
前辈,贴出来大家学习学习。。。
liang8305 2008-01-04
  • 打赏
  • 举报
回复
其实你原来的那种方法应该也可以,只不过可能<mime-type> application/msword </mime-type> 错了
试试我那个<mime-type>application/x-download</mime-type>
liang8305 2008-01-04
  • 打赏
  • 举报
回复
文件名不固定IO处理起来不方便?是什么意思?

IO和文件名有必要的对应关系吗?
IO创建可以用FILE类型参数
FILE创建可以用String类型参数
既然是参数就是可变的




你可以写一个下载用的servlet:getTextAction
<a href="getTextAction?textName=s.txt">

首先response.setContentType("application/plan");
然后request.getParameter("textName");
通过这个textName去把文件内容读出来,内容写进response.getOutputStream里就可以了,
读一行写一行也行全部读到buf里再写也行,随便你

主要就是response.setContentType("text/plan");这个设置
这个设置的意思就是,响应是什么类型,是显示在网页上,还是下载用,显示在网页上,又是什么类型的文本,text,还是xml的,还是html的

还是不行就试试 response.setContentType("application/x-download");
我也不记得了


poiunet 2008-01-04
  • 打赏
  • 举报
回复
期待...
其他高手快出现!
wu_07 2008-01-04
  • 打赏
  • 举报
回复
传递参数到下面jsp

<a href="filedown.jsp?filename=s.txt"> txt1 </a>


<%@ page contentType="text/html; charset=gb2312"%><%@page import="java.io.*"%><%
String filename = "";
if (request.getParameter("filename") != null) {
filename = request.getParameter("filename");
}
String name = filename.substring(filename.lastIndexOf("/") + 1);
//response.setContentType("application/msword");
response.setContentType("application/x-msdownload");
response.setHeader("Content-disposition","attachment; filename="+name);

BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream(getServletContext().getRealPath("" + filename)));
bos = new BufferedOutputStream(response.getOutputStream());

byte[] buff = new byte[2048];
int bytesRead;

while(-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff,0,bytesRead);
}

} catch(final IOException e) {
System.out.println ( "出现IOException." + e );
} catch(final IllegalStateException e) {
System.out.println ( "出现IllegalStateException." + e );
}finally {
if (bis != null)
bis.close();
if (bos != null)
{
bos.flush();
bos.close();
bos=null;
}
}
response.flushBuffer();
out.clear();
out = pageContext.pushBody();

%>

poiunet 2008-01-04
  • 打赏
  • 举报
回复
http://dl1.csdn.net/down3/20070430/30162200835.txt

csdn也没做到~

poiunet 2008-01-04
  • 打赏
  • 举报
回复
163的邮箱都没做到~刚去试了
tantaiyizu 2008-01-04
  • 打赏
  • 举报
回复
让用户点另存啊 ,不过csdn好像做到了啊 ,多学学
poiunet 2008-01-04
  • 打赏
  • 举报
回复
我这个是一个富媒体编辑器在管理员端编辑文章,上传文件,然后存到数据库里.

然后让来访者浏览的页面在把内容读出来,

读出内容类似:
通知吃饭 <a href="s.txt"> 菜单请下载 </a>



我这个txt文件的名字不固定~txt文件地址是从库里读出来的,编辑器不是我做的~我不能改编辑器让它给每个
txt的链接都加上 "getTextAction?textName="

application/x-download无效~application/zip也无效~就application/msword有效但下载后扩展名还变成doc了
poiunet 2008-01-03
  • 打赏
  • 举报
回复
还是谢谢你~继续期待高手~

不行的话我准备写个servlet,处理.txt 就跟处理.do似的~这样就能用流输出了~
老紫竹 2008-01-03
  • 打赏
  • 举报
回复
是的

poiunet 2008-01-03
  • 打赏
  • 举报
回复
谢谢老紫竹!那网站是你的吧~
真NB又学了一招~
我改成<a href="#" onclick="saveas('s.txt')">s.txt</a> 即打开了~也出下载窗口了(虽然窗口是那样的).


不过~我这种情况好象用不了你这招~富媒体编辑器是别人写的~我不能改编辑器的程序让每个下载都加上<a href="#" onclick="
不过这招不错~

老紫竹 2008-01-03
  • 打赏
  • 举报
回复
saveas('s.txt') 啦

记得把s.txt放在和jsp/htm文件相同的目录啊!

我做一个测试地址给你。

http://www.java2000.net/test/test.htm#
tosswang2005 2008-01-03
  • 打赏
  • 举报
回复
以前遇到过这种问题,当时就是打完包后做的下载,帮顶!
poiunet 2008-01-03
  • 打赏
  • 举报
回复
to:java2000_net

prototype.js我下载了一个
我改成<a href="javascript: saveas('http://127.0.0.1/s.txt')" >s.txt</a>
但是返回false啊~


to:FJINS
我在web.xml改了,不行~还是IE打开
FJINS 2008-01-03
  • 打赏
  • 举报
回复
应该是
<mime-mapping>
<extension>txt</extension>
<mime-type>application/zip</mime-type>
</mime-mapping>
poiunet 2008-01-03
  • 打赏
  • 举报
回复
to:java2000_net

<script type="text/javascript" src="prototype.js"></script>
function saveas(url)
<a href="#" >2.txt</a>

我是菜鸟,javascript不太回~这个prototype.js在那啊?saveas这个函数什么时候触发的?
poiunet 2008-01-03
  • 打赏
  • 举报
回复
谢谢各位捧场~

我这个是一个富媒体编辑器在管理员端编辑文章,上传文件,然后存到数据库里.

然后让来访者浏览的页面在把内容读出来,

读出内容类似:
通知吃饭<a href="s.txt">菜单请下载</a>


文件名不固定~用IO流处理起来不太方便吧
老紫竹 2008-01-03
  • 打赏
  • 举报
回复
对了,我的方法不需要修改xml配置,不需要编写java代码,纯 javascript的。
需要prototype
老紫竹 2008-01-03
  • 打赏
  • 举报
回复
我有一个方法,可以实现,这里的博克又不能发文章了,气死我了

http://www.java2000.net/viewthread.jsp?tid=179
加载更多回复(4)

81,094

社区成员

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

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