package org.wjjia.key.com;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 文件下载既可以是get请求也可以是post
* @author Administrator
*
*/
public class Download extends HttpServlet{
private static final long serialVersionUID = -2441767250729580445L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
System.out.println("----------------------doPost-----------------------------");
//获取网站部署路径(通过ServletContext对象),用于确定下载文件位置,从而实现下载
String basePath = req.getSession().getServletContext().getRealPath("/resources/downloadExamples");
//获取文件名称(包括文件格式)
// String fileName = req.getParameter("downFileName");
// fileName =new String(fileName.getBytes("iso8859-1"),"UTF-8");
String fileName ="interface.xlsx";
//组合成完整的文件路径
String targetPath = basePath+File.separator+fileName;
System.out.println("目标路径targetPath--------->"+targetPath);
//得到要下载的文件
File file = new File(targetPath);
//如果文件不存在
if(!file.exists()){
System.out.println("您要下载的资源已被删除!!!");
return;
}
System.out.println("您要下载的资源存在!!!");
//设置相应类型application/octet-stream
// resp.setContentType("application/vnd.ms-excel;charset=utf-8");
//1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
resp.setContentType("multipart/form-data");
//2.设置文件头:
resp.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));//此处需要设置下载文件的默认名称
System.out.println("----下载的文件名称---------------"+resp.getHeader("content-disposition"));
ServletOutputStream out = resp.getOutputStream();
FileInputStream in=null;
try {
in= new FileInputStream(targetPath);
int b = 0;
byte[] buffer = new byte[in.available()];
b=in.read(buffer);
System.out.println(b);
while (b!=-1){
// 每次写bytesRead长字节
out.write(buffer, 0, b);
b--;
System.out.println("--b----"+b);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null){
out.close();
out.flush();
}
if(in !=null){
in.close();
}
}
}
}
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 文件下载既可以是get请求也可以是post
* @author Administrator
*
*/
public class Download extends HttpServlet{
private static final long serialVersionUID = -2441767250729580445L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
System.out.println("----------------------doPost-----------------------------");
//获取网站部署路径(通过ServletContext对象),用于确定下载文件位置,从而实现下载
String basePath = req.getSession().getServletContext().getRealPath("/resources/downloadExamples");
//获取文件名称(包括文件格式)
// String fileName = req.getParameter("downFileName");
// fileName =new String(fileName.getBytes("iso8859-1"),"UTF-8");
String fileName ="interface.xlsx";
//组合成完整的文件路径
String targetPath = basePath+File.separator+fileName;
System.out.println("目标路径targetPath--------->"+targetPath);
//得到要下载的文件
File file = new File(targetPath);
//如果文件不存在
if(!file.exists()){
System.out.println("您要下载的资源已被删除!!!");
return;
}
System.out.println("您要下载的资源存在!!!");
//设置相应类型application/octet-stream
// resp.setContentType("application/vnd.ms-excel;charset=utf-8");
//1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
resp.setContentType("multipart/form-data");
//2.设置文件头:
resp.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));//此处需要设置下载文件的默认名称
System.out.println("----下载的文件名称---------------"+resp.getHeader("content-disposition"));
ServletOutputStream out = resp.getOutputStream();
FileInputStream in=null;
try {
in= new FileInputStream(targetPath);
int b = 0;
byte[] buffer = new byte[in.available()];
b=in.read(buffer);
System.out.println(b);
while (b!=-1){
// 每次写bytesRead长字节
out.write(buffer, 0, b);
b--;
System.out.println("--b----"+b);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null){
out.close();
out.flush();
}
if(in !=null){
in.close();
}
}
}
}