1. Upload
- 요청주소
http://localhost/webPro/fileUpDown/uploadFrm01.jsp
- 파일 업로드 위치
C:\file_repo
- 기능 동작 페이지
- 해당 기능 구현 소스 (upload.jsp)
(jsp 페이지네 스크립틀릿 내에 코딩)
---->> 파일 처리 구문
<%
/*DiskFileItemFactory클래스: 업로드되어진 파일을 저장할 저장소와 관련된 클래스
ServletFileUpload클래스 : 업로드된 파일 및 파라미터에 대한 정보를 가져와
파일업로드, 파라미터 값 가져오기 */
request.setCharacterEncoding("utf-8");
File currentDirPath = new File("C:\file_repo");
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setRepository(currentDirPath);//파일저장할 디렉토리set
factory.setSizeThreshold(1024*1024);//최대업로드 가능 파일사이즈set
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> items = upload.parseRequest(request);
for(int i=0; i<items.size() ;i++){
FileItem fileItem = (FileItem)items.get(i);
if(fileItem.isFormField()){ //폼필드라면
out.print(fileItem.getFieldName()+" : "); //브라우저출력
out.print(fileItem.getString("utf-8")+"<br/>"); //=> 향후 DB에 저장되어야 하는 DATA
System.out.println(fileItem.getFieldName()+" : "+fileItem.getString("utf-8")); //콘솔출력
}else{//폼필드가 아니라면
out.print("<p>-------------------------</p>");
//브라우저출력-파일명/파일크기 => 향후 DB에 저장되어야 하는 DATA
out.print(">>"+(i-1)+"번째 파일");
out.print("<br/> -파라미터(변수명) : "+fileItem.getFieldName());
out.print("<br/> -파일명 : "+fileItem.getName());
out.print("<br/> -파일크기 : "+fileItem.getSize()+"<br/><br/>");
//콘솔출력
System.out.println("파라미터(변수명) :"+fileItem.getFieldName()+
"/파일명 :"+fileItem.getName()+
"/파일크기 :"+fileItem.getSize());
}//if
}//for
%>
---------------------------------------------------------------------------------------------
2. Download
- 요청주소
http://localhost/webPro/fileUpDown/downloadFrm01.jsp
- 파일 다운로드 위치
C:\file_repo
- 기능 동작 페이지
- 해당 기능 구현 소스(downloadFrm01.jsp)
<body>
<h3>Download</h3>
<form name="frm1" id="frm1" method="post" action="download.jsp">
<%-- download.jsp 페이지로 보낼 그림 파일 이름과 값--%>
<input type="hidden" name="df1" value="1.png"/>
<input type="hidden" name="df2" value="2.png"/>
<input type="hidden" name="df3" value="3.png"/>
<input type="submit" value="download"/>
</form>
</body>
- 해당 기능 구현 소스(download.jsp)
<% //download.jsp
request.setCharacterEncoding("utf-8");
%>
<c:set var="df1" value="${param.df1}"/>
<c:set var="df2" value="${param.df2}"/>
<c:set var="df3" value="${param.df3}"/>
*<c:out value="${df1}"/> <br/>
*<c:out value="${df2}"/> <br/>
*<c:out value="${df3}"/> <br/><br/><br/>
<c:if test="${not empty df1}">
<img
src="<%=request.getContextPath()%>/download.dong?fileName=${df1}"
class="c1"/>
</c:if>
<br/><br/>
<c:if test="${not empty df2}">
<img
src="<%=request.getContextPath()%>/download.dong?fileName=${df2}"
class="c1"/>
</c:if>
<br/><br/>
<c:if test="${not empty df3}">
<img
src="<%=request.getContextPath()%>/download.dong?fileName=${df3}"
class="c1"/>
</c:if>
<br/><br/>
- 해당 기능 구현 소스(FileDownload.java)
@WebServlet("/download.dong") ---> 어노테이션 사용
public class FileDownload extends HttpServlet {
private static final long serialVersionUID = 1L;
public void init(ServletConfig config) throws ServletException {
System.out.println("init()호출-최초 1회만 호출");
}
public void destroy() {
System.out.println("destroy()호출");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
process(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
process(request,response);
}
private void process(HttpServletRequest request, HttpServletResponse response) throws IOException {
//파라미터받기
String fileName= request.getParameter("fileName");
//비즈니스로직 //Model //View ---->> 파일 처리 구문
OutputStream out = response.getOutputStream();
String file_repo = "C:\\file_repo"; //저장소
String downFile = file_repo+"\\"+fileName;
File file = new File(downFile);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Content-disposition",
"attachment; fileName="+fileName);
FileInputStream fis = new FileInputStream(file);
byte[] buffer = new byte[1024*8];
while(true) {
int cnt = fis.read(buffer);
if(cnt==-1) {break;}
out.write(buffer,0,cnt);
}//while끝
fis.close();
out.close();
}
}
</body>
'JSP' 카테고리의 다른 글
23.01.27 JSON & ajax 을 이용한 Member table 조회 응용(미정리) (0) | 2023.01.30 |
---|---|
23.01.25 JSON & ajax(미정리) (0) | 2023.01.30 |
2023.01.27 jsp 페이지 script문 내에 Session 요청 형식 (0) | 2023.01.28 |
23.01.26 Get / Post 개념정의 (0) | 2023.01.27 |
23.01.24 request.getContextPath() (0) | 2023.01.24 |