⚡ Stream I/O로 파일 저장
- .jsp
<body>
<form id="frm" enctype="multipart/form-data">
첨부파일 : <input type="file" name="mfile"><br><br>
<input type="button" value="전송" onclick="update()">
</form>
</body>
<script type="text/javascript">
function update(){
frm.method = "post";
frm.action = "./jsp15.do";
frm.submit();
}
</script>
- servlet 파일 (.java)
package shop;
@MultipartConfig(
fileSizeThreshold = 1024*1024*2,
maxFileSize = 1024*1024*5,
maxRequestSize = 1024*1024*100
)
public class jsp15 extends HttpServlet {
private static final long serialVersionUID = 1L;
//Stream I/O로 파일 저장
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
Part file = request.getPart("mfile");
String url = request.getServletContext().getRealPath("/upload/");
String filename = file.getSubmittedFileName();
String save = url+filename;
//fileinputstream : 최고엄마 , 네트워크로 넘어 올 시 이렇게 사용
InputStream is = file.getInputStream(); //파일 전송에 대한 파일 읽기
//전송된 파일을 해당 경로에 저장시키는 형태
FileOutputStream fs = new FileOutputStream(save);
//파일 크기 변환
byte[] bf = new byte[1024*1024*2]; //2MB
//파일의 전송 크기만큼 저장시킴
int size = 0;
while((size=is.read(bf))!= -1) {
fs.write(bf,0,size);
}
fs.flush();
fs.close();
is.close();
PrintWriter pw = response.getWriter();
pw.write("<script>"
+ "alert('정상적으로 파일이 업로드 되었습니다');"
+ "location.href='./jsp15.jsp';"
+ "</script>");
}
}