您的位置:首页 > 编程语言 > Java开发

SpringMVC框架-21:文件下载

2019-05-30 12:39 120 查看

第一步:前端发送请求

[code]<a href="${pageContext.request.contextPath}/download/timg.jpg">下载文件</a>

第二步:后端接收并处理

[code]@Controller
public class FileController {

@RequestMapping("/download/{fileName:.+}")
public ResponseEntity download(@PathVariable String fileName, HttpSession session) throws IOException {
System.out.println("来到了,文件名为:"+fileName);
//获取文件的真实路径
ServletContext servletContext = session.getServletContext();
String realPath = servletContext.getRealPath("/download/"+fileName);

//将文件读取到程序中
FileInputStream io = new FileInputStream(realPath);
//创建一个数组,并且数组的大小就是文件的大小
byte[] bytes = new byte[io.available()];
io.read(bytes);

//创建响应头并设置响应头信息,告诉浏览器是以什么形式进行操作这个文件,并且可以设置文件名称和状态码等
fileName = URLEncoder.encode(fileName,"UTF-8");
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.add("Content-Disposition","attachment;filename="+fileName);//告诉浏览器以附件的形式下载

//真正把响应头设置好的信息写给浏览器
ResponseEntity<byte[]> responseEntity = new ResponseEntity<>(bytes,httpHeaders, HttpStatus.OK);

return responseEntity;
}
}

注意:这里有一个问题没有解决,如果是中文文件,目前还是没有解决乱码问题,会导致找不到文件,应该是哪一个位置的编码设置问题,另外这里是通过restful风格接收参数的

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: