利用SpringMVC下载不同类型文件

时间:2022-12-11 07:57:18

网上有看到使用SpringMVC来下载图片,pdf等等,但是仅限于规定文件类型的下载,查找了一下文档,写一个统一下载各种类型文件的Controller。
文件存放路径:
利用SpringMVC下载不同类型文件
下载请求uri:http://localhost:8080/DownloadDemo/download/sample.zip

@RequestMapping("download/{fileName:.+}")
public void downloadZipResource(HttpServletRequest request,
HttpServletResponse response,
@PathVariable("fileName") String fileName)
{
ServletContext context = request.getSession().getServletContext();
String dataDirectory = context.getRealPath("/downloads") + "/" + fileName;
File file = new File(dataDirectory);
if (file.isFile())
{
String mimeType = context.getMimeType(dataDirectory); //直接根据文件的路径名来获取它的MineType,这样就可以灵活的根据请求的文件类型来返回输出流了
response.setContentType(mimeType);
response.addHeader("Content-Disposition", "attachment; filename="+fileName);
try
{
OutputStream os = response.getOutputStream();;
IOUtils.copy(new FileInputStream(file), os);
os.flush();
}
catch (IOException ex) {
ex.printStackTrace();
}
}
}