最近在做一个项目,关于文件下载功能:客户端点击某个链接之后,服务器会弹出浏览器的下载,例如:
那么具体是怎么实现呢?
其实非常简单,先给出类的代码:
public class fileDownload {
public static void fileDownload(final HttpServletResponse response, String filePath, String fileName) throws Exception{
byte[] data = toByteArray2(filePath);
fileName = URLEncoder.encode(fileName, "UTF-8");
response.reset();
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
response.addHeader("Content-Length", "" + data.length);
response.setContentType("application/octet-stream;charset=UTF-8");
OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());
outputStream.write(data);
outputStream.flush();
outputStream.close();
response.flushBuffer();
} }
然后是服务器端的代码:
File file = new File("/www/server/data/mysql-files/data/A.pdf");
if (file.exists()) {
String filePath = "/www/server/data/mysql-files/data/A.pdf";
String fileName = "A.pdf";
try {
fileDownload.fileDownload(response, filePath, fileName);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
其实到这里就已经结束了,只要客户端发送请求到服务器,服务器就会自己发送给客户端文件下载的请求。