728x90
[AJAX] 다중 fileupload / formData 이용하여 JSON 파라미터 넘기기
html js file은 JSON에 포함될 수 없다. 그래서 FormData 안에 file과 JSON (= data)를 append 시킨다. //FormData 새로운 객체 생성 var formData = new FormData(); // 넘길 데이터를 담아준다. var data =..
truecode-95.tistory.com
업로드 이후로 다운로드 기능을 정리해보았다.
xml
<select id="selectFileList" resultType="CommonFileVO" parameterType="CommonFileVO">
SELECT file_no,
board_no,
original_file_name,
stored_file_name,
file_size,
create_date,
create_user,
del_y_n
FROM commonfiles
WHERE board_no = #{boardNo}
</select>
mapper
List<CommonFileVO> selectFileList(String boardNo);
service
public List<CommonFileVO> selectFileList(String boardNo) {
return boardMapper.selectFileList(boardNo);
}
jsp
<c:forEach items="${infofileList}" var="map">
<a href="${pageContext.request.contextPath}/main/board/fileDown.do?storedFileName=${map.storedFileName}&originalFileName=${map.originalFileName}">${map.originalFileName}</a>
</c:forEach>
controller
@RequestMapping(value="/fileDown.do") //글 리스트 페이지
public void fileDown(@RequestParam("originalFileName")String originalFileName, @RequestParam("storedFileName")String storedFileName, HttpServletRequest request, HttpServletResponse response) throws Exception {
CommonFileVO fileVO = new CommonFileVO();
fileVO.setOriginalFileName(originalFileName);
fileVO.setStoredFileName(storedFileName);
fileutils.fileDownload(fileVO, request, response);
}
fileUtils
//파일 다운로드
public static void fileDownload (CommonFileVO fileVO, HttpServletRequest request, HttpServletResponse response) throws Exception {
// globals.properties
File file = new File(EgovProperties.getProperty("Globals.filePath"), fileVO.getStoredFileName());
BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
//User-Agent : 어떤 운영체제로 어떤 브라우저를 서버( 홈페이지 )에 접근하는지 확인함
String header = request.getHeader("User-Agent");
String fileName;
if ((header.contains("MSIE")) || (header.contains("Trident")) || (header.contains("Edge"))) {
//인터넷 익스플로러 10이하 버전, 11버전, 엣지에서 인코딩
fileName = URLEncoder.encode(fileVO.getOriginalFileName(), "UTF-8");
} else {
//나머지 브라우저에서 인코딩
fileName = new String(fileVO.getOriginalFileName().getBytes("UTF-8"), "iso-8859-1");
}
//형식을 모르는 파일첨부용 contentType
response.setContentType("application/octet-stream");
//다운로드와 다운로드될 파일이름
response.setHeader("Content-Disposition", "attachment; filename=\""+ fileName + "\"");
//파일복사
FileCopyUtils.copy(in, response.getOutputStream());
in.close();
response.getOutputStream().flush();
response.getOutputStream().close();
}
globals.properties
# 파일 업로드 경로(경로 설정은 반드시 절대경로를 사용해야함, 경로 뒤에 /를 붙여 주어야함.)
Globals.filePath = C:/file/upload/
'Spring' 카테고리의 다른 글
| @RequestParam 값이 Null / 예외 처리 (required=false) (0) | 2022.02.16 |
|---|---|
| [Spring] WebSocket sockJS 실시간 알림 구현하기 (3) (1) | 2022.01.10 |
| 컨트롤러 아닌곳에서 session 값 얻기 (0) | 2021.11.28 |
| [JAVA] sever ip 얻는 방법 InetAddress.getLocalHost() (0) | 2021.11.28 |
| [Spring] WebSocket sockJS Q&A 실시간 알림 구현하기 (2) (3) | 2021.11.12 |