<%@ page contentType="text/html;charset=gb2312" import="java.io.*"%>
<%
try{
String str=request.getParameter("name1");
str=new String(str.getBytes("iso8859-1"),"gb2312");
File fileLoad=new File("f:\\tools\\xiazai",str);//下载文件
response.reset();
OutputStream o=response.getOutputStream();
BufferedOutputStream bos=new BufferedOutputStream(o);
byte b[]=new byte[500];//输出文字用的字节数组,每次发送500个字节到输出流
response.setHeader("Content-disposition","attachment;filename="+new String(str.getBytes("gb2312"),"iso8859-1"));//客户使用保存文件的对话框
response.setContentType("application/x-tar");//通知客户文件的mime类型
long fileLength=fileLoad.length();//通知客户文件的长度
String length=String.valueOf(fileLength);
response.setHeader("Content_Length",length);
FileInputStream in=new FileInputStream(fileLoad);//读取文件并发给客户下载
int n=0;
while((n=in.read(b))!=-1)
{
bos.write(b,0,n);
}
bos.close();
}
catch(Exception e){
out.println("发生了异常"+e);
}
response.reset();
%> 其中的response.reset()和response.setHeader()这两种方法该怎样理解呀,response.setHeader("Content-disposition","attachment")什么意思呀,
我如果把含有response方法(包括上面两种)的代码,如:response.setHeader("Content_Length",length);response.ContentType()去掉,代码也可照常编译,为什么呀?
<%
try{
String str=request.getParameter("name1");
str=new String(str.getBytes("iso8859-1"),"gb2312");
File fileLoad=new File("f:\\tools\\xiazai",str);//下载文件
response.reset();
OutputStream o=response.getOutputStream();
BufferedOutputStream bos=new BufferedOutputStream(o);
byte b[]=new byte[500];//输出文字用的字节数组,每次发送500个字节到输出流
response.setHeader("Content-disposition","attachment;filename="+new String(str.getBytes("gb2312"),"iso8859-1"));//客户使用保存文件的对话框
response.setContentType("application/x-tar");//通知客户文件的mime类型
long fileLength=fileLoad.length();//通知客户文件的长度
String length=String.valueOf(fileLength);
response.setHeader("Content_Length",length);
FileInputStream in=new FileInputStream(fileLoad);//读取文件并发给客户下载
int n=0;
while((n=in.read(b))!=-1)
{
bos.write(b,0,n);
}
bos.close();
}
catch(Exception e){
out.println("发生了异常"+e);
}
response.reset();
%> 其中的response.reset()和response.setHeader()这两种方法该怎样理解呀,response.setHeader("Content-disposition","attachment")什么意思呀,
我如果把含有response方法(包括上面两种)的代码,如:response.setHeader("Content_Length",length);response.ContentType()去掉,代码也可照常编译,为什么呀?
response.setHeader() 是设置消息头
对总结过的输入没影响