怎样实行文本文件下载?
一般来说下载就是
<a href="d:\program\mypro.exe">这里下载</a>
但是我要下载文本时候,他就不给我下载,而是直接显示在网页上,有没有好的办法让他不显示在网页上,而可以下载文本!谢谢!
问题点数:0、回复次数:13Top
1 楼LDH202(玲海)回复于 2005-04-02 12:11:56 得分 0
没办法,这是浏览器控制的,这个问题相当于
问:如何下载网页
<a href="d:\program\mypro.html">这里下载</a>
你说浏览器会打开一个下载提示吗?Top
2 楼mygia(www.gzcost.com)回复于 2005-04-02 12:59:47 得分 0
好像有行的,强制下载,有些邮件系统不是这样吗?附件是文本的点击也是保存文本。
以前看过,现在一时找不到。Top
3 楼LDH202(玲海)回复于 2005-04-02 13:29:15 得分 0
不行的,浏览器不同效果都很不一样
没有所谓的强制下载
但是你可以尝试编写一个Servlet来实现,将需要下载的文件设置为attachment
能够解决某些类型文件的下载问题
噢,当然,HTML还是不行Top
4 楼Idora(我不当老大已经很多年,恩)回复于 2005-04-02 14:08:16 得分 0
<%
try{
String filename = "test.txt";
String filepath = "D:\\report\\";
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition",
"attachment; filename=\"" + filename + "\"");
java.io.FileInputStream fileInputStream =
new java.io.FileInputStream(filepath+filename);
int i;
while ((i=fileInputStream.read()) != -1) {
out.write(i);
}
fileInputStream.close();
out.close();
}catch(java.io.IOException e){
e.printStackTrace();
}
%>Top
5 楼yeyu710(叶雨)回复于 2005-04-02 14:22:56 得分 0
楼上的真的能行吗?Top
6 楼cqgaoke(技高软件公司)回复于 2005-04-02 15:44:23 得分 0
upTop
7 楼zxbrgjs(GoFace)回复于 2005-04-02 16:01:18 得分 0
html可以啊Top
8 楼zxbrgjs(GoFace)回复于 2005-04-02 16:06:04 得分 0
写一个servlet,
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
File file = .....;
String suggestName = .....;
response.setContentType("application/octet-stream");
response.setHeader("Content-disposition","attachment; filename="+suggestName );
response.setContentLength((int)file.length());
// Use Buffered Stream for reading/writing.
bis = new BufferedInputStream(new FileInputStream(file));
bos = new BufferedOutputStream(response.getOutputStream());
byte[] buff = new byte[2048];
int bytesRead;
// Simple read/write loop.
while(-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
bos.flush();
} finally {
...
}
Top
9 楼hornbilltofy()回复于 2005-04-02 16:07:23 得分 0
那就把文本文件的扩展名随便改成一个IE不认识的就可以了,比如把它压缩成rar文件.再说了IE接收后也可以另存为文本文件的.Top
10 楼LDH202(玲海)回复于 2005-04-02 18:28:12 得分 0
随便修改扩展名容易愚弄用户,
最好就是让所有的下载资源直接就是压缩包Top
11 楼disremember(disremember)回复于 2005-04-03 12:40:02 得分 0
如果你用tomcat5以上的话,可以通过配置tomcat的mime类型就可以,
就是修改web.xml设置来实现你要的。
具体方法是:
将你的web.xml配置文件中
<mime-mapping>
<extension>txt</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
修改为:
<mime-mapping>
<extension>txt</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
Top
12 楼gekie(椰城闪客)回复于 2005-04-14 13:05:43 得分 0
upTop
13 楼tiannet(http://tiannet.yculblog.com)回复于 2005-04-14 13:55:08 得分 0
String strFullPath = "文件存放的绝对路径";
java.io.File objFile; //文件对象
java.io.RandomAccessFile objFileReader;
byte[] byteBuffer = new byte[4096];
int intLength; //实际读出的字符数(一个中文为一个字符)
//创建文件对象
objFile = new java.io.File(strFullPath);
//判断文件是否存在
if(objFile.exists()){//文件存在
//获取文件长度
iFileSize = (int)objFile.length();
//设置HTTP输出头参数
response.setHeader("Content-Disposition", "attachment; filename=" + new String(strAffixName.getBytes("gb2312"),"ISO-8859-1"));
response.setHeader("Connection", "close");
response.setHeader("Content-Type", "application/octet-stream");
response.setContentLength(iFileSize);
//创建读文件对象
objFileReader = new java.io.RandomAccessFile(objFile,"r");
//读文件内容
out.clear();
while((intLength = objFileReader.read(byteBuffer)) != -1){
//输出
out.write(new String(byteBuffer,0,intLength,"ISO-8859-1"));
}
//关闭读文件对象
objFileReader.close();
}else{//文件不存在 contentType="text/html;charset=gb2312"
response.setHeader("contentType","text/html;charset=gb2312");
out.println("file \"" + strFullPath + "\" not exists!");
}Top




