以前不太重视Servlet,觉得servlet能够实现的功能,jsp都能实现,这一阶段猛学servlet,很有感触,正好一网友法帖求助,怎样用servlet实现下载。我就贴一篇吧,以供大家参考(主要的Servlet,关联文件没有贴出):
/*
* DownLoad.java
*/
package com.zy.oa.util;
import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.net.*;
/**
* 实现下载功能
*/
public class DownLoad {
public void downLoad(HttpServletResponse response, String headName, String fileUrl) throws Exception{
Logger.log("begin download " + headName);
if (headName.endsWith(".jpg") || (headName.endsWith(".gif"))) {
//no need setting content type and header
} else if (headName.endsWith(".txt")) {
response.setContentType( "text;charset=GB2312");
response.setHeader("Content-disposition",
"attachment; filename=" + headName );
} else {
response.setContentType( "application/doc;charset=GB2312");
response.setHeader("Content-disposition",
"attachment; filename=" + headName );
}
String fileURL = fileUrl;
Logger.log(fileURL);
if(fileURL == null)
return;
try{
File file = new File(fileUrl);
FileInputStream bis = new FileInputStream(file);
OutputStream bos = response.getOutputStream();
byte[] buff = new byte[1024];
int readCount = 0;
int i = 0;
readCount = bis.read(buff);
while (readCount != -1){
bos.write(buff, 0, readCount);
readCount = bis.read(buff);
}
Logger.log("read finished!");
if (bis!=null)
bis.close();
if (bos!=null)
bos.close();
}catch(Exception e){
e.printStackTrace();
throw e;
}
}
}
/*
* DownLoad.java
*/
package com.zy.oa.util;
import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.net.*;
/**
* 实现下载功能
*/
public class DownLoad {
public void downLoad(HttpServletResponse response, String headName, String fileUrl) throws Exception{
Logger.log("begin download " + headName);
if (headName.endsWith(".jpg") || (headName.endsWith(".gif"))) {
//no need setting content type and header
} else if (headName.endsWith(".txt")) {
response.setContentType( "text;charset=GB2312");
response.setHeader("Content-disposition",
"attachment; filename=" + headName );
} else {
response.setContentType( "application/doc;charset=GB2312");
response.setHeader("Content-disposition",
"attachment; filename=" + headName );
}
String fileURL = fileUrl;
Logger.log(fileURL);
if(fileURL == null)
return;
try{
File file = new File(fileUrl);
FileInputStream bis = new FileInputStream(file);
OutputStream bos = response.getOutputStream();
byte[] buff = new byte[1024];
int readCount = 0;
int i = 0;
readCount = bis.read(buff);
while (readCount != -1){
bos.write(buff, 0, readCount);
readCount = bis.read(buff);
}
Logger.log("read finished!");
if (bis!=null)
bis.close();
if (bos!=null)
bos.close();
}catch(Exception e){
e.printStackTrace();
throw e;
}
}
}