특수 문자 절단 에 대한@PathVariable 문제 해결
2474 단어 @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:.+}이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.만약 잘못 이 있 거나 완전히 고려 하지 않 은 부분 이 있다 면 아낌없이 가르침 을 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[java, #19] MVC 기초2login 페이지로 들어갈 수 있는 api, 아이디와 비밀번호를 입력하면 로그인되도록 하는 api 두 가지를 만들어볼 것이다. login 페이지에 접속했다면, 아이디와 비밀번호를 입력할 수 있는 input란이 보일 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.