GET 방식으로 파일을 다운로드를 하다보니 크롬에서는 괜찮지만, IE에서는 문제가 발생한다.
"서버를 찾을 수 없습니다" 라던가 " 이 페이지는 존재 하지않습니다" 라던가 등등의 문제가 발생한다.
이유는 간단한데, GET방식의 글자 제한으로 인한 문제이다..
글자를 줄일수 있다면야 계속 사용하겠지만, 그건 안되고 ㅜㅜ
그래서 GET을 POST 방식으로 바꾸기로했다.
(사실 말이 POST방식이지 GET을 사용하여 다운로드를 한다.)
그래도 혹시 모르니 GET, POST 방식 모두 올려 놓도록 하겠다.
GET 방식
view 단
location.href = url + '/filedownload?' + encodeURI(me.form.serialize() , "UTF-8");
location.href 을 사용하면 get 방식으로 사용이 된다고 함.
encodeURI( 포맷, "포맷방식") 을 사용하여 한글 깨짐이 없도록 한다.
Controller 단
@RequestMapping(value = "/filedownload", method = RequestMethod.GET)
public ModelAndView getFile(@RequestParam ... ) throws Exception {
String fileNm = "파일명";
String path = "파일의 경로"
if(path == null){
return null;
}
File file = new File(path);
param.put("file", file);
param.put("fileName", fileNm);
param.put("contentType", "application/download;charset=UTF-8");
return new ModelAndView("downloadView", param);
}
POST 방식
view단
$.ajax({
url: url + '/filedownload',
method: 'POST',
loadingTarget: true,
data: me.form.serialize(),
dataType: 'json',
success: function(data) {
if (data.header.success) {
if(!data.body)
return;
var path = 'path=' + data.body;
location.href = url + '/filedownload?' + encodeURI(path , "UTF-8");
}
}
});
Controller 단
@RequestMapping(value = "/filedownload", method = RequestMethod.POST)
@ResponseBody
public Result getFile(@RequestParam ... ) throws Exception {
String fileNm = "파일명";
String path = "파일의 경로"
path = URLEncoder.encode(path, "UTF-8");
return new Result(true, "0000", (Object) path);
}
@RequestMapping(value = "/filedownload", method = RequestMethod.GET)
public ModelAndView getFile(@RequestParam ... ) throws Exception {
String path = (String) param.get("path"); // 위에서 보냈던 경로가 들어옴
if(path == null){
return null;
}
path = URLDecoder.decode(path, "UTF-8");
String fileNm = "파일명";
File file = new File(path);
param.put("file", file);
param.put("fileName", fileNm);
param.put("contentType", "application/download;charset=UTF-8");
return new ModelAndView("downloadView", param);
}
ajax로 post 방식으로 값을 먼저 보낸 후,
파일 경로를 받아 get으로 다운을 하면 된다.
'IT > Language' 카테고리의 다른 글
[Kotlin] Kotlin의 기본 변수 선언 (0) | 2019.01.04 |
---|---|
[kotlin] 안드로이드 스튜디오로 코틀린(kotlin) 시작하기 (0) | 2019.01.04 |