class 27, 28 - 파일 입력 / fullpage

yoneeki·2023년 3월 14일
0

training-jp

목록 보기
18/31

jsp 파일 입력

form

  • form을 인코딩해야 함 : multipart/form-data
<form action="../board/fileUpload" method="POST" 
enctype="multipart/form-data">
	<table>
		<tbody>
			<tr>
				<th>제목</th>
				<td><input type="text" name="title"></td>
			</tr>
			<tr>
				<th>카테고리</th>
				<td>
					<select name="category">
						<option value="bigbang">bigbang</option>
						<option value="classic">classic</option>
						<option value="deep sea">deep sea</option>
					</select>
				</td>
			</tr>
			<tr>
				<th>방수 깊이</th>
				<td><input type="text" name="depth"></td>
			</tr>
			<tr>
				<th>가격</th>
				<td><input type="text" name="price"></td>
			</tr>
			<tr>
				<th>이미지</th>
				<td><input type="file" name="file"></td>
			</tr>
		</tbody>
	</table>
	<div>
		<button>확인</button>
	</div>
</form>

서블릿

@WebServlet("/board/fileUpload")
public class FileUploadController extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public FileUploadController() {
		super();
	}

	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");

		int maxFileSize = 1024 * 1024 * 50; // 50메가
		String encoding = "UTF-8";
		DefaultFileRenamePolicy fileRenamePolicy = new DefaultFileRenamePolicy();

		String savePath = "upload";// 저장할 폴더 이름
		ServletContext context = this.getServletContext();
		String realPath = context.getRealPath(savePath);

		File dir = new File(realPath);
		if (!dir.exists()) {
			dir.mkdir();
		}

		/*
		 * MultipartRequest mutipartRequest = new MultipartRequest(request, 파일이 저장되는 경로,
		 * 올릴 수 있는 파일 사이즈, 인코딩, 중복파일 이름 처리);
		 */
         // 파일 처리 시 일반 request 대신 아래와 같은 특별한 request 사용
		MultipartRequest mutipartRequest = new MultipartRequest(request, realPath, maxFileSize, encoding,
				fileRenamePolicy);
		String title = mutipartRequest.getParameter("title");
		String category = mutipartRequest.getParameter("category");
		int depth = Integer.parseInt(mutipartRequest.getParameter("depth"));
		int price = Integer.parseInt(mutipartRequest.getParameter("price"));
		String originalFile = mutipartRequest.getOriginalFileName("file");
		String renameFile = mutipartRequest.getFilesystemName("file");

		ClockDto dto = new ClockDto();
		dto.setTitle(title);
		dto.setCategory(category);
		dto.setDepth(depth);
		dto.setPrice(price);
		dto.setClockImg(originalFile);
		dto.setClockRealImg(renameFile);

		ClockDao dao = new ClockDao();
		int result = dao.insertClock(dto);
		if (result > 0) {
			ScriptWriter.alertAndBack(response, "파일 입력 완료");
		} else {
			ScriptWriter.alertAndBack(response, "파일 처리 X");
		}
		System.out.println(title + "===" + originalFile + "===" + renameFile);
	}

}

파일 저장 경로

[eclipse workspace 주소]\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\[작업 중인 프로젝트]\upload

Full Page

  • 하나의 section을 화면에 꽉 차게 만드는 js 라이브러리

  • fullpage.min.js와 fullpage.css

profile
Working Abroad ...

0개의 댓글