Multipart 파일 업로드하기 - 연습중

쪼경·2021년 6월 28일
0

아직 학생이고, 연습을 기록해두기 위해서 작성한것이니 공부에 도움이 되지 않는 글일것입니다..ㅠ

[파일 업로드 구현]

  1. web-content 에 'storage' 폴더 구성

  2. DB 테이블 생성

   CREATE TABLE storage(
   no INT PRIMARY KEY AUTO_INCREMENT,
   filedpath VARCHAR(255) NOT NULL,
   filedname VARCHAR(255) NOT NULL,
   uploader_no INT,
   ragdate DATETIME DEFAULT CURRENT_TIMESTAMP,
   FOREIGN KEY (uploader_no) REFERENCES member(no) ON DELETE CASCADE
   );

경로를 저장하는게 아니라, 파일 자체를 저장하는게 좋지 않을까??

=> 파일을 대용량을 넣기에 적합하지 않은 DB들이 있어서
저장공간은 따로 있고 그 경로만 넣어주는게 좋다.

  1. DTO DAO 만들기

    1) DTO
    2) DAO

    public List selectAll()
    public storageDto select(int no)
    public boolean insert (StorageDto dto)

받아오는건 번호지만 목록에 보이기 위해서는 닉네임을 보여야하니, JOIN으로 받아오기!!

  1. upload 'form' 만들기

    method = "post"
    enctype = "multipart/form-data"

    왜 method는 반드시 POST형식이여야할까?

    => form에서 파일을 전송하기 위해서는 enctype이 “multipart/form-data”로 설정되어 있어야 한다. enctype은 PODT방식에서만 존재하기 때문에 GET방식은 사용할 수 없다.

    잠깐 POST방식이랑 GET방식의 차이가 뭐였지??

    => GET 방식으로 보낼 수 있는 데이터는 한계가 있어서, 그 이상의 데이터를 보내게 되면 깨지기 때문에 넘기는 데이터가 많을 경우 POST를 쓰거나, 보안상의 문제가 있는 경우에 POST를 쓰게 된다.




multipartReuest 객체 생성하기

MultipartRequest mr = new MultipartRequest(
		request,
		directoryPath, 
		4* 1e+9,  // 4GB
		"utf-8",
		new DefaultFileRenamePolicy() 
  );

1번 인자는 파일 파라미터가 들어있는 request객체
2번 인자는 파일을 저장할 서버 내의 디렉토리 경로
3번 인자는 넘어온 파일 파라미터릐 최대 허용 용량(단위 byte).
4번 인자는 파일 외의 다른 파라미터들의 문자 인코딩 방식 = 한글 처리가 불가능 하기 때문에 "utf-8"로 설정
5번 인자는 리네임 정책 - 중복된 이름의 파일이 전달되었을 때 이름을 어떻게 지정할 것인가

profile
[개발자] Lv.1

0개의 댓글