java文件下载
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class Down {
@ResponseBody
@RequestMapping(value = "/d")
public void down(HttpServletRequest request,HttpServletResponse response) {
try {
//获取网站部署路径(通过ServletContext对象),用于确定下载文件位置,从而实现下载
//String path=request.getSession().getServletContext().getRealPath("tmp");
String path = "d:/tmp";
File file = new File(path);
//1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
response.setContentType("application/octet-stream");
//2.设置文件头:最后一个参数是设置下载文件名
String fileName = new String(file.getName().getBytes("gbk"), "iso-8859-1");
response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);
//设置文件大小
response.setContentLength((int) file.length());
ServletOutputStream out;
//通过文件路径获得File对象(假如此路径中有一个download.pdf文件)
FileInputStream inputStream = new FileInputStream(file);
//3.通过response获取ServletOutputStream对象(out)
out = response.getOutputStream();
int b = 0;
byte[] buffer = new byte[512];
while (b != -1) {
b = inputStream.read(buffer);
//4.写到输出流(out)中
out.write(buffer, 0, b);
}
inputStream.close();
out.close();
out.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}