import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.itheima.util.IOUtils;
public class DownServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String filename = request.getParameter("file");
response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(filename,"utf-8"));
response.setContentType(this.getServletContext().getMimeType(filename));//MIME类型
InputStream in = new FileInputStream(this.getServletContext().getRealPath(filename));
OutputStream out = response.getOutputStream();
IOUtils.In2Out(in, out); //自定义工具类,将两个流对接
IOUtils.close(in, null); //关闭流,其中response的输出流不用自己关
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
==================================================================
IOUtils
==================================================================
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class IOUtils {
private IOUtils() {
}
public static void In2Out(InputStream in,OutputStream out) throws IOException{
byte [] bs = new byte[1024];
int i = 0;
while((i=in.read(bs))!=-1){
out.write(bs,0,i);
}
}
public static void close(InputStream in,OutputStream out){
if(in!=null){
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}finally{
in = null;
}
}
if(out!=null){
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}finally{
out = null;
}
}
}
}