index.jsp中
<form action="downLoad" method="get">
请输入下载名:<input type="text" name="name"><br>
<input type="submit" value="提交">
</form>
-------------------------------------------------------------------------------
提交到名为downLoad的servlet中
------------------------------------------------------------------------------
在WEB-INF目录下
------software目录下
---------s1.zip,s2.zip
-----------------------------------------------------------------------------------
新建downLoadservlet
---------------------------------------------------------------------------------
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//取得下载文件名
String op=request.getParameter("name").trim();
if(op==null)
{
op="";
}
else if(op.equals("1"))
{
//这个方法设置发送到客户端的响应的内容类型,此时响应还没有提交。给出的内容类型可以包括字符编码说明
response.setContentType("application/x-download");
op="s1.zip";
}
else if(op.equals("2"))
{
//这个方法设置发送到客户端的响应的内容类型,此时响应还没有提交。给出的内容类型可以包括字符编码说明
response.setContentType("application/x-download");
op="s2.zip";
}
else
{
//否则转向到初始页面
request.getRequestDispatcher("index.jsp").forward(request, response);
return;
}
//设置报头,可以不设置,如果不设置,则需要用户自己输入下载文件名
response.setHeader("content-Disposition", "attachment:filename=/""+op+"/"");
//取得文件的具体路径
op=this.getServletContext().getRealPath("/WEB-INF/software/"+op);
OutputStream os=response.getOutputStream();
FileInputStream fis=new FileInputStream(op);
BufferedOutputStream bos=new BufferedOutputStream(os);
BufferedInputStream bis=new BufferedInputStream(fis);
byte[] buff = new byte[2048];
int bytesRead;
//下面是文件的复制
while ( -1 != (bytesRead = (bis.read(buff, 0, buff.length)))) {
bos.write(buff, 0, bytesRead);
}
bos.close();
bis.close();
fis.close();
os.close();
}
-----------------------结束-----------------------------------