웹스퀘어라는 놈, 참 친해지기 어렵다.;; 줴길..
//파일 다운로드시 파일명이 깨지는 현상 해결..
업로드도 파일업로드 콤포넌트가 websquare.xml에 설정해놓은 위치로 자동으로 올려버리고...
(음,,, 이건 편리한 기능인건가..;;;;;; 그런거 같기도.. )
암튼,,
난 당연히 multipart form 형식으로 보내서 controller에서 처리하려고 했단 말이다!! -_- 줴길..
허허;;
그래서 다른방법이 없다 한참 고민하다가, 차장님의 도움으로,,;;
(난 창의적인 생각이 잘 들지 않는 정말 FM 개발자 이기 떄문에.;;;;)
웹스퀘어 콤포넌트로는 temp폴더에 올려두고,
해당 데이터를 그리드에 남겨 저장을 할때 temp에서 실제 프로젝트에서 원하는
위치로 업로드 하는 것으로 변경했다.. coooooooooooooooooooooooooool;;
암튼,, 그렇게 업로드는 해결했고,
다운로드는 머 수월하게.......
하는 듯 했으나..
갑자기 등장한 한글 파일명이 꺠지는 현상 -_-
머 당연히 인코딩, 디코딩으로 해결 했는데,
문제는 URLEncoder.encode(fileName,"UTF-8") 요고를 하면서
파일명에 들어있는 공백이 '+'로 표시된다는 것..
줸장할..
이래저래 찾아보고 뒤져보고 난리를 쳤지만,,
결론은... +를 replace하는 것;;
좀 황당한 결론이긴 한데.. 그게 맞는 듯 하다..
몇시간의 삽질을 뒤로하고,
다시는 안 잊어먹으리라 다짐하며.. ㅋ
아래는 sample소스..
File uFile = new File(filePath);
int fSize = (int) uFile.length();
if( fSize > 0 )
{
BufferedInputStream in = new BufferedInputStream(new FileInputStream(uFile));
String mimetype = new MimetypesFileTypeMap().getContentType(uFile);
response.setBufferSize(fSize);
//파일 다운로드시 파일명이 깨지는 현상 해결..
response.setContentType(mimetype + "; charset=utf-8");
String fileNm = URLEncoder.encode(fileName,"UTF-8").replace('+', ' ');
response.setHeader("Content-Disposition", "attachment;fileName=\""+fileNm+"\";");
response.setContentLength(fSize);
FileCopyUtils.copy(in, response.getOutputStream());
in.close();
response.getOutputStream().flush();
response.getOutputStream().close();
}
덧글