一、采用RequestDispatcher的方式进行
1、web.xml文件中增加
<mime-mapping>
<extension>doc</extension>
<mime-type>application/vnd.ms-word</mime-type>
</mime-mapping>
2、程序如下:
<
%@page
language="java" import="java.net.*"
pageEncoding="gb2312"%>
<%
response.setContentType("application/x-download");//设置为下载application/x-download
String filenamedownload = "/
系统解决方案
.doc";//
即将下载的文件的相对路径
String filenamedisplay = "
系统解决方案
.doc";//
下载文件时显示的文件保存名称
filenamedisplay = URLEncoder.encode(filenamedisplay,"UTF-8");
response.addHeader("Content-Disposition","attachment;filename="
+ filenamedisplay);
try
{
RequestDispatcher dispatcher =
application.getRequestDispatcher(filenamedownload);
if(dispatcher != null)
{
dispatcher.forward(request,response);
}
response.flushBuffer();
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
}
%>
二、采用文件流输出的方式下载
1、web.xml文件中增加
<mime-mapping>
<extension>doc</extension>
<mime-type>application/vnd.ms-word</mime-type>
</mime-mapping>
2、程序如下:
<
%@page
language="java"
contentType="application/x-msdownload"
import="java.io.*,java.net.*" pageEncoding="gb2312"%>
<%
//关于文件下载时采用文件流输出的方式处理:
//
加上
response.reset()
,并且所有的%>后面不要换行,包括最后一个;
//
因为
Application Server
在处理编译
jsp
时对于%>和<%之间的内容一般是原样输出,而且默认是PrintWriter,
//
而你却要进行流输出:
ServletOutputStream
,这样做相当于试图在
Servlet
中使用两种输出机制,
//
就会发生:
getOutputStream() has
already been called for this response
的错误
//
详细请见《
More Java Pitfill
》一书的第二部分
Web
层
Item 33
:试图在
Servlet
中使用两种输出机制
270
//
而且如果有换行,对于文本文件没有什么问题,但是对于其它格式,比如
AutoCAD
、
Word
、
Excel
等文件
//
下载下来的文件中就会多出一些换行符
0x0d
和
0x0a
,这样可能导致某些格式的文件无法打开,有些也可以正常打开。
response.reset();//
可以加也可以不加
response.setContentType("application/x-download");//
设置为下载
application/x-download
// /../../
退
WEB-INF/classes
两级到应用的根目录下去,注意
Tomcat
与
WebLogic
下面这一句得到的路径不同,
WebLogic
中路径最后没有
/
System.out.println(this.getClass().getClassLoader().getResource("/").getPath());
String filenamedownload =
this.getClass().getClassLoader().getResource("/").getPath() +
"/../../
系统解决方案
.doc";
String filenamedisplay = "
系统解决方案
.doc";//
系统解决方案
.txt
filenamedisplay = URLEncoder.encode(filenamedisplay,"UTF-8");
response.addHeader("Content-Disposition","attachment;filename="
+ filenamedisplay);
OutputStream output = null;
FileInputStream fis = null;
try
{
output = response.getOutputStream();
fis = new FileInputStream(filenamedownload);
byte[] b = new byte[1024];
int i = 0;
while((i = fis.read(b)) > 0)
{
output.write(b, 0, i);
}
output.flush();
}
catch(Exception e)
{
System.out.println("Error!");
e.printStackTrace();
}
finally
{
if(fis != null)
{
分享到:
相关推荐
Java实现文件下载功能,以WORD文档方式展现给用户看。
Java实现文件下载,直接复制使用。代码清晰。
用ajax实现的java文件打包下载。可以输入扩展名选择文件下载。
JAVA代码,通过文件名及文件路径实现本地文件下载。
java实现文件下载,并弹出保存对话框(Excel)
Java实现文件下载并解决中文文件名乱码
用Java来实现文件下载的功能,里面包括了Java实现的源代码,希望能帮助大家
用java代码实现文件下载的使用例子,实用简洁。
Java文件下载的几种方式,供大家参考!!!
java使用itext实现pdf文件下载小案例,通过系统路径下载,和通过浏览器下载
2022年用Java实现HTTP文件队列下载Java教程.docx
主要为大家详细介绍了java实现文件下载的两种方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
在java代码中实现文件的上传和下载,通过页面的file文件上传到java代码段,获取文件的大小和名字
用JAVA语言实现的文件浏览器,类似于资源管理器的功能;
java 实现 word 文档的在线预览,资源包含代码和jar包,下载放入项目既可以使用
主要为大家详细介绍了java利用oss实现下载功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Java实现HTTP文件下载
经典的java文件上传下载实例。 通过阅读详细的注释,可以比较容易地理解java文件上传和下载的原理和一般的做法。