首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

servlet文件上载

2012-08-29 
servlet文件下载import?java.io.BufferedInputStreamimport?java.io.BufferedOutputStreamimport?java.i

servlet文件下载
import?java.io.BufferedInputStream;
import?java.io.BufferedOutputStream;
import?java.io.File;
import?java.io.FileInputStream;
import?java.io.IOException;

import?javax.servlet.ServletException;
import?javax.servlet.ServletOutputStream;
import?javax.servlet.http.HttpServlet;
import?javax.servlet.http.HttpServletRequest;
import?javax.servlet.http.HttpServletResponse;

public?class?FileDownload?extends?HttpServlet?{

??protected?void?service(HttpServletRequest?req,?HttpServletResponse?res)
??????throws?ServletException,?IOException?{

????//?服务器相对路径
????String?path?=?req.getParameter("path");
????//?服务器绝对路径
????path?=?getServletContext().getRealPath("/")?+?path;

????//?检查文件是否存在
????File?obj?=?new?File(path);
????if?(!obj.exists())?{
??????res.setContentType("text/html;charset=GBK");
??????res.getWriter().print("指定文件不存在!");
??????return;
????}

????//?读取文件名:用于设置客户端保存时指定默认文件名
????int?index?=?path.lastIndexOf("\");?//?前提:传入的path字符串以“\”表示目录分隔符
????String?fileName?=?path.substring(index?+?1);

????//?写流文件到前端浏览器
????ServletOutputStream?out?=?res.getOutputStream();
????res.setHeader("Content-disposition",?"attachment;filename="?+?fileName);
????BufferedInputStream?bis?=?null;
????BufferedOutputStream?bos?=?null;
????try?{
??????bis?=?new?BufferedInputStream(new?FileInputStream(path));
??????bos?=?new?BufferedOutputStream(out);
??????byte[]?buff?=?new?byte[2048];
??????int?bytesRead;
??????while?(-1?!=?(bytesRead?=?bis.read(buff,?0,?buff.length)))?{
????????bos.write(buff,?0,?bytesRead);
??????}
????}?catch?(IOException?e)?{
??????throw?e;
????}?finally?{
??????if?(bis?!=?null)
????????bis.close();
??????if?(bos?!=?null)
????????bos.close();
????}
??}

}

热点排行