2014-12-01 4 views
2

JSP를 사용하여 HTML 형식의 Blob 파일을 MySQL 데이터베이스로 업로드합니다. 파일 이름을 DB에 삽입해야합니다. 파일 이름이 Content-Disposition 헤더에 저장되어 있는지 어떻게 알 수 있습니까? 미리 감사드립니다!Content-Disposition에서 파일 이름 가져 오기

답변

10

당신이 HttpServletRequest.getPart와 JavaEE 어플 (6) 사용하여 파일을 업로드 한 경우 :

Part part = request.getPart("xxx"); // input type=file name=xxx 
String disposition = part.getHeader("Content-Disposition"); 
String fileName = disposition.replaceFirst("(?i)^.*filename=\"?([^\"]+)\"?.*$", "$1"); 

Part를 참조하십시오.


@Mark는 언급 한대로 URL 인코딩을 처리하지 않았습니다.

fileName = URLDecoder.decode(fileName, StandardCharsets.ISO_8859_1); 

가 확인되지 않음 (그는 또한. 옵션 파일 이름 주위에 따옴표를했다)하지만, 헤더 HTTP 인코딩은 기본적으로 ISO-8859-1해야한다.

+0

고마워요! 누군가 다른 사람이 시도한 경우 : 아파치 CXF 휴식 컨트롤러를 사용하고 MultipartBody 개체에서 "파트"를 첨부 파일로 가져와 나를 위해 일했습니다. – matthieusb

+0

인코딩 된대로 파일 이름을 디코딩해야합니다. – Marc

+0

@Marc 덕분에 야생에서 테스트하지 않았지만 동의합니다. 나는 너에게 책임을 묻었다. –

관련 문제