@RequestMapping(value = "/view/upload/**", method = RequestMethod.GET)
@ResponseBody
public void viewFile(HttpServletRequest request, HttpServletResponse response){
try {
log.info("viewFile");
String path = URLDecoder.decode("/home/file/自己的文件目录/"+request.getRequestURI().substring(6), "UTF-8");
log.info("path {}",path);
File file = new File(path);
response.setHeader("Content-Type","application/msexcel");
response.setHeader("content-disposition", String.format("attachment; filename=%s", URLEncoder.encode(file.getName(), "UTF-8")));
response.setCharacterEncoding("UTF-8");
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
InputStream in = java.nio.file.Files.newInputStream(file.toPath());
int len ;
byte[] buffer = new byte[1024];
OutputStream out = response.getOutputStream();
while ((len = in.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
out.flush();
in.close();
}catch (Exception e){
log.error("查看文件失败",e);
}
}
以上代码实现读取本地文件并返回 路径中包含/**,匹配所有/view/upload/ 开头的url