HttpServlet实现文件的下载

HttpServlet实现文件的下载


首先是提供下载的输入框:

<body>

     <form action="/TestPro/servlet/DownloadServlet" method="post">

          输入下载的文件名:<input type="text" name="filename"/>

          <input type="submit" value="下载/>

     </form>

</body>

 

【注意】

上面<input>name用于在ServletRequest中获得文本框的输入内容。

 

 

下面是DownloadServlet中的代码:

OutputStream out = response.getOutputStream();

 

String filename = request.getParameter("filename");

// 文本从Brower传递是被编码为IOS-8859-1,需要转换成utf-8

String filename_utf new String(filename.getBytes("ISO-8859-1"),"utf-8");

 

if (filename_utf == null || filename_utf.equals(""))

{

     out.write("请输入文件名!".getBytes("utf-8"));

     response.setContentType("text/html;charset=utf-8");

     out.close();

     return;

}

// 获得服务器中文件的真实存储路径

String filePath = getServletContext().getRealPath("store/" + filename_utf);

 

int indexIndector = filename_utf.indexOf(".");

// 获得提取文件的文件后缀,包括.

String indector  = filename_utf.substring(indexIndector, filename_utf.length());

// 由文件的全路径获得要下载文件的InputStream

InputStream is = new FileInputStream(new File(filePath));

 

Date date = new Date();

long time = date.getTime();

// 设置响应头的MIME类型

response.setContentType("application/force-download");

response.setHeader("Content-Length",String.valueOf(is.available()));

response.setHeader("Content-Disposition""attachment;filename=" + time + indector);

 

int i = 0;

byte[] b = new byte[1024];

while ((i = is.read(b)) != -1)

{

     out.write(b, 0, i);

}

is.close();

out.close();

 

点击下载之后:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值