response.setContentType(contentType);//不同的文件类型,contentType不一样,比如图片一般是image/jpeg、image/png等
package cn.hanquan.controller;
import java.io.File;
import java.io.IOException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class DemoDownload {
@RequestMapping("download")
public void download(String filename, HttpServletResponse res, HttpServletRequest req) throws IOException {
// 设置响应流中文件进行下载
// attachment是以附件的形式下载,inline是浏览器打开
// bbb.txt是下载时显示的文件名
// res.setHeader("Content-Disposition", "attachment;filename=bbb.txt"); // 下载
res.setHeader("Content-Disposition", "inline;filename=bbb.txt"); // 浏览器打开
// 把二进制流放入到响应体中
ServletOutputStream os = res.getOutputStream();
System.out.println("here download");
String path = req.getServletContext().getRealPath("files");
System.out.println("path is: " + path);
System.out.println("fileName is: " + filename);
File file = new File(path, filename);
byte[] bytes = FileUtils.readFileToByteArray(file);
os.write(bytes);
os.flush();
os.close();
}
}
该篇文章介绍了如何在SpringMVC控制器中处理文件下载请求,使用`HttpServletResponse`设置`Content-Disposition`和`contentType`,并通过`ServletOutputStream`将文件内容写入响应体。
1869

被折叠的 条评论
为什么被折叠?



