springmvc文件下载

/**
	 * 
	 * @Title: export @Description: 下载文件 @param fileName @param
	 *         filePath @return @throws IOException ResponseEntity<byte[]> @throws
	 */
	@RequestMapping("/download")
	public ResponseEntity<byte[]> export(HttpServletRequest request, HttpServletResponse response, Integer fileId)
			throws IOException {
		DocumentFileModel model = documentFileService.getFileById(fileId);
		String filePath = model.getUrl();
		String fileName = model.getName();
		String type = model.getSuffix();
		// 文件上传保存路径
		String uploadSavePath = "";

		// 判断配置文件是否有设置图片保存路径,有则读取配置中的路径
		if (GlobalImageUploadConstants.IMAGE_UPLOAD_SAVE_DISK != null) {
			uploadSavePath = GlobalImageUploadConstants.IMAGE_UPLOAD_SAVE_DISK;
		} else {
			uploadSavePath = GlobalHttpServletRequest.getHttpSession().getServletContext().getRealPath("/");
		}
		filePath = uploadSavePath + filePath;
		HttpHeaders headers = new HttpHeaders();
		File file = new File(filePath);
		headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
		// headers.setContentDispositionFormData("attachment", fileName);
		/** 文件下载图片乱码处理 **/
		fileName = URLEncoder.encode(fileName, "utf-8");
		if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) {// 1.IE浏览器UTF-8
			headers.setContentDispositionFormData("attachment", fileName + "." + type);
		} else {// 2.其余浏览器attachment;filename*=utf-8'zh_cn
			response.setHeader("Content-Disposition", "attachment;filename*=utf-8'zh_cn'" + fileName + "." + type);// 重点
		}
		return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);
	}