특수 문자 절단 에 대한@PathVariable 문제 해결

개요:

@ResponseBody
 @RequestMapping(value="/download/{fileName:[a-zA-Z0-9\\.\\-\\_]+}", method = RequestMethod.GET)
 public void downloadAmr( HttpServletRequest request, HttpServletResponse response, @PathVariable("fileName") String fileName) {
 response.setContentType("application/octet-stream");
 String dir = System.getProperty("catalina.home"); //  tomcat        
 System.out.println("tomcat  =" + dir); 
 //             filedir.properties      
 String dir2 = dir.substring(0, dir.length()) + File.separator +"webapps" + File.separator + "ROOT" + File.separator + fileName; 
 File file = new File(dir2);
 ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
 byte[] buffer = new byte[1024]; 
 int len; 
 try { 
 InputStream inputStream = new FileInputStream(file);
 while ((len = inputStream.read(buffer)) > -1 ) { 
 byteArrayOutputStream.write(buffer, 0, len); 
 } 
 byteArrayOutputStream.flush(); 
 response.getOutputStream().write(byteArrayOutputStream.toByteArray());
 } catch (FileNotFoundException e) {
 logger.error("      ", e);
 } catch (IOException e) { 
 logger.error(e.getMessage(), e); 
 } 
 logger.info("    。。。。。。。。。。。。。。。。。");
 }
요약:
1.기본 값 의 경우/download/{fileName},그리고@PathVariable("fileName"),
경로 가/download/1.jpg 라면 fileName=1 이 1.jpg 가 아 닌 기본 문자 입 니 다. -관련 이 차단 되 었 다.
2.해결책 은{fileName:[a-zA-Z0-9\\.\\-\\_]+} 정규 표현 식 으로 이 문자 들 이 잘 릴 수 없다 는 것 을 표시 합 니 다.
추가:Springboot 는@PathVariable 로 전 참 됩 니 다.마지막 매개 변 수 는 소수점 뒤의 부분 을 잃 어 버 립 니 다.
@PathVariable 전달 경로 인 자 를 사용 할 때 신기 하 게 도 뒤의 매개 변수의 소수점 뒷부분 이 보이 지 않 습 니 다.다음 코드:
Controller 방법 설명 은 다음 과 같 습 니 다.

@RequestMapping(value = "/user/findPassword/{email}", method = RequestMethod.GET, produces="application/json")
나 는 메 일 을 전달 하려 고 왔 는데 메 일 접미사 가 없 는 것 을 발견 했다.
아무리 생각해 도 이해 가 안 돼 서 바 이 두 가 해결 하 는 방법 은 다음 과 같다.

@RequestMapping(value = "/user/findPassword/{email:.+}", method = RequestMethod.GET, produces="application/json")
인자 뒤에 콜론 과 소수점 을 추가 합 니 다:{email:.+}
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.만약 잘못 이 있 거나 완전히 고려 하지 않 은 부분 이 있다 면 아낌없이 가르침 을 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기