HWP 업로드 시 크롬에서는 다운로드 잘 되는데, IE에서는 다운로드 시 한글도 깨진 상태로 브라우저가 읽어서 보여주는 경우가 간혹 있다.
그래서 여러 가지를 시도해 보았다.
이건 이미 IE에서 통하지 않는 걸로 알고 있었으나 그래도 혹시 몰라 붙여보았다.
<a href="/file/${fn:toLowerCase(vo.bbsName)}/${vo.fileName}" download>${vo.fileName}</a>
역시나 IE에서는 통하지 않았다.
tomcat이 설치되어 있는 경로에서 conf/web.xml을 열어서 mime-mapping 하단에 추가하였다.
구글링 검색 시 application/x-hwp 이렇게 추가하라는 사람도 있었고, application/unknown 이것을 추가하라는 사람도 있었다.
어떤게 정답인지는 모르겠지만 나는 application/unknown 이걸로 추가하였다.
<mime-mapping>
<extension>hwp</extension>
<mime-type>application/unknown</mime-type>
</mime-mapping>
솔직히 이것만 하면 해결될 줄 알았으나 해결이 되지 않아서 application/x-hwp 이렇게 변경을 해보아도 결과는 같았다.
WEB-INF/web.xm에 mime-mapping 설정을 어디선가 본 기억이 있는 것 같아서 추가를 해보았다.
<mime-mapping>
<extension>hwp</extension>
<mime-type>application/unknown</mime-type>
</mime-mapping>
별 기대를 안 하고 해 본 것이지만 역시나 해결이 되진 않았다.
혹시나 파일 이름이 한글이라서 안 되는 것일까?
의구심이 생겨 파일명을 URL Encoding을 해보자는 생각을 했다.
하지만 해당 코드가 JSTL로 되어있어서 JSTL에서는 URL Encoding을 어떻게 해야 하는지 검색을 해보았다.
<c:url value="/yourClient" var="url">
<c:param name="yourParamName" value="http://google.com/index.html" />
</c:url>
<a href="${url}">Link to your client</a>
JSTL은 해당 라이브러리를 사용하여 저렇게 하면 되는데, 문제는 이 소스의 URL은 Pathvariable로 되어있더라.
그래서 Pathvariable로 되어있는 URL은 JSTL로 어떻게 Encoding을 해야 하는지 검색을 해보아도 딱히 답이 없어 보였다.
그래서 그냥 Java에서 파일 리스트를 가져올 때 반복문을 돌려서 URL Encoding을 했다.
if( !CollectionUtils.isEmpty(oldAttachFileList) ) {
for( EgovMap vo : oldAttachFileList ) {
String fileName = (String) vo.get("fileName");
String encodeFileName = URLEncoder.encode(fileName, "UTF-8");
vo.put("encodeFileName", encodeFileName);
}
}
이렇게나 해보았지만 소용이 없었다.
이제는 뭘 해봐야 하지 고민을 하고 있었는데 생각을 해보니 이 운영서버는 아파치 웹 서버를 띄우고 있다는 생각이 들었다.
그래서 아파치 쪽의 설정을 변경해보면 될 것 같다는 생각에 구글링을 해보았다.
찾아보니 mime.types과 httpd.conf를 수정하면 된다고 하더라.
mime.types
application/x-hwp hwp frm hwt
httpd.conf
AddType application/x-hwp .hwp .frm .hwt
해당 설정 부분 후정 후 아파치를 재시작하였지만 문제는 해결이 되지 않았다.
더 이상 어떻게 해야 할지 몰라 회사 선배에게 물어보니 jQuery filedownload.js를 사용해보라고 하더라.
구글에 jQuery filedownload.js로 검색을 해서
https://github.com/johnculviner/jquery.fileDownload/blob/master/src/Scripts/jquery.fileDownload.js
johnculviner/jquery.fileDownload
jQuery File Download is a cross server platform compatible jQuery plugin that allows for an Ajax-like file download experience that isn’t normally possible using the web. - johnculviner/jquery.file...
github.com
해당 링크에서 소스를 긁어 js파일로 만들었다.
그리고 JSP 쪽에서 해당 태그를 클릭했을 때 이벤트 소스를 수정하였다.
<a href="javascript:;" data-old-file-url="/file/${fn:toLowerCase(vo.bbsName)}/${vo.encodeFileName}">${vo.fileName}</a>
$( document ).ready(function() {
$("[data-old-file-url]").on("click", function() {
var url = $( this ).attr("data-old-file-url");
$.fileDownload(url,{
httpMethod: "POST"
});
});
});
적용 후 테스트를 해보니 드디어 IE에서 한글파일이 정상적으로 다운로드가 되더라...
나중에 까먹을지도 모르니 이 방법들은 기록해두는것이 좋을 것 같다.
[Spring/오류] Cannot change version of project facet Dynamic Web Module to 2.5. (0) | 2020.07.31 |
---|---|
[Spring/POI] SXSSF 방식을 활용한 엑셀 다운로드 (0) | 2020.07.28 |
[Spring/Java] POI 라이브러리를 활용 Excel 데이터 읽기 (0) | 2020.04.19 |
[Spring] Client Ip 가져오기 (0) | 2020.04.06 |
[Java] 파일 확장자 체크(확장자 체크/Tika를 이용한 MimeType 검사) (0) | 2020.04.05 |
댓글 영역