<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function send(f) {
let title = f.title.value.trim();
let photo = f.photo.value;
if(title==''){
alert('제목을 입력하세요!!');
f.title.value="";
f.title.focus();
return;
}
if(photo==''){
alert('사진을 선택하세요!!');
return;
}
f.action = "upload.do"; // FileUploadAction
f.submit();
}// end:send()
</script>
</head>
<body>
<!-- File Upload조건
1. method = "POST"
2. entype="multipart/form-data"
-->
<form method="POST" enctype="multipart/form-data">
제목 : <input name="title"><br>
사진 : <input type="file" name="photo">
<input type="button" value="전송" onclick="send(this.form);">
</form>
</body>
</html>
-> 서버를 9버전으로 활용
*)실제 실행경로와 프로그램 편집 경로는 다르다.
)파일업로드 서블릿
package action;
import java.io.File;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.oreilly.servlet.MultipartRequest;
import com.oreilly.servlet.multipart.DefaultFileRenamePolicy;
/**
* Servlet implementation class FileUploadAction
*/
@WebServlet("/upload.do")
public class FileUploadAction extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
*/
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// /upload.do?title=제목&photo=a.jpg
// String saveDir = "F:\\dev\\upload"; // upload 위치
String webPath = "/upload/"; // 웹(URL)경로
// 현재 웹어플리케이션의 전역관리객체(상대경로->절대경로)
ServletContext application = request.getServletContext();
// 웹(상대)경로 -> 절대경로 구하기 (과정 꼭 필요!!!)
String saveDir = application.getRealPath(webPath);
System.out.println(saveDir);
int maxSize = 1024 * 1024 * 100; // 최대업로드크기 (100MB)
// FileUpload객체 => MultipartRequest
MultipartRequest mr = new MultipartRequest(
request, // request 위임
saveDir, // 저장위치
maxSize, // 최대업로드크기
"utf-8", // 수신인코딩
// 화일이름이 동일할 경우 다른 이름으로 변경시키는 객체
new DefaultFileRenamePolicy()
);
// 업로드화일명을 얻어온다
String filename = "no_file";
// mr에 의해서 업로드된 화일정보 얻어온다
File f = mr.getFile("photo");
if(f!=null) { //업로드화일 존재하면
filename = f.getName();
f.getAbsolutePath();
}
// 업로드화일 외에 다른 파라메터는 mr로 수신해야 된다
String title = mr.getParameter("title");
//System.out.println(title);
// request binding
request.setAttribute("title", title);
request.setAttribute("filename", filename);
// Dispatcher형식으로 호출
String forward_page = "result1.jsp";
RequestDispatcher disp = request.getRequestDispatcher(forward_page);
disp.forward(request, response);
}
}
)결과 jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
제목: ${ title }
<hr>
<img src="upload/${ filename }" width="200">
</body>
</html>
)사진 2개 올리기
=> 1개와 똑같음 모두 2개씩
)백업/ 복구 파일 (실행 프로젝트의 구조를 잘 파악해야 함)
'웹 - 서버' 카테고리의 다른 글
웹 - 이미지 삭제 (0) | 2024.06.28 |
---|---|
웹 - 파일 다운로드 (0) | 2024.06.28 |
웹 - 파일 업로드 패키지 다운 경로 (0) | 2024.06.27 |
웹 - 서버 - 회원정보 수정/ 로그인-회원가입 전체 코드 (0) | 2024.06.26 |
웹 - 서버 - 회원정보 삭제 (0) | 2024.06.26 |