2023年11月28日发(作者:)

本文只想告诉jsp的初学者,如何轻松实现文件下载功能,在代码实现上只涉及最核心部分

的实现,一些修饰性的实现尽量会简略。

下面共3中文件下载的方式,运行可以查看到显示效果。

建立文件

从服务器上直接下载文件(比较适合可以在IE中直接打开的文档

类型,如txt类型)

从服务器上直接下载文件(比较不能再IE中直接打开的文档类型,

doc类型)

从服务器上直接下载文件(适合动态生成内容的文件)

建立文件

<%@ page contentType="text/html; charset=GBK"%>

<%@ page import="tDispatcher"%>

<%

//从服务器上直接打开文件

String realFile = "/file/复件 ";

String fileName = "复件 ";

tentType("APPLICATION/OCTET-STREAM");

der("Content-Disposition", "attachment;filename="

+ (fileName, "UTF-8"));//避免名字乱码的

try {

RequestDispatcher dis = application

.getRequestDispatcher(realFile);//是请求转发,前后页面共享一个request ,

返回的是一个RequestDispatcher对象; direct()是重新定向,前后页面不是一

request

if (dis != null) {

d(request, response);//是在服务器端运行,对于浏览器来说是“透明

的” direct()是通过向客户浏览器发送命令来完成.

}

uffer();//清缓冲区

();//清缓冲区,保存当前的out对象,并更新PageContextPage范围内Out

对象

out = dy();//清缓冲区

} catch (Exception e) {

tackTrace();

} finally {

}

%>

建立文件

<%@ page contentType="text/html;charset=GBK"%>

<% // 实现从服务器上下载文件

String filename ="";//文件名

String filepath = "G:ApacheTomcat5528t3webappsgwfile2011年测试

工作小结.doc";//文件在服务器上的路径

tentType("APPLICATION/OCTET-STREAM");

der("Content-Disposition","attachment; filename="" +

(filename, "UTF-8") + """);

putStream inStream =new putStream(filepath);

byte[] b = new byte[1024];

int len;

while((len=(b)) >0)

putStream().write(b,0,len);

putStream().close();

();

();//清缓冲区,保存当前的out对象,并更新PageContextPage范围内Out

对象

out = dy();//清缓冲区

%>

建立文件

<%@ page contentType="text/html;charset=GBK"%>

<%//直接写入内容生成文件

String filename ="";//Hello Stream这个字符串写入了response对象的输

出流并生成这个文件

tentType("APPLICATION/OCTET-STREAM");

der("Content-Disposition","attachment; filename="" +

filename + """);

String tmpStr = "Hello Stream";

byte[] b = es();

int len = ;

putStream().write(b,0,len);

putStream().close();

%>