jnk1m
Foliage IT
jnk1m
전체 방문자
오늘
어제
  • 분류 전체보기 (209)
    • Today I Learned (34)
    • Java (47)
    • Database (15)
    • [NHN Academy] (27)
    • Spring (47)
    • HTML + CSS + JavaScript (11)
    • JSP (3)
    • Node.js (10)
    • React Native (2)
    • 기타 (8)
    • 스크랩 (5)

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
글쓰기 / 관리자
jnk1m

Foliage IT

Spring

[Spring] Day15 파일 업로드 (Note)

2022. 4. 9. 16:49

2022/4/5 

 

다운로드: 브라우저에서 제공하는 서비스: 서버 제공하는 파일 -> 브라우저 (클라이언트) 쪽으로 보내주는 것 

업로드: 서버에서 구현 가능: 브라우저 (클라이언트) PC에서 서버쪽으로 파일을 보내주는 것. 

 

1) 파일 전송 방식: (업로드 기준)  GET: URL 데이터 추가 ?뭐=뭐 이런식으로 보냄...주소창에 이미지를 올릴 수 없기에. 파일은 포스트 형식으로 보냄. POST: 데이터를 Body 몸체에 담아서 전송. 파일 업로드 시 POST 방식으로 업로드 요청해야함.  

*인코딩 방식 <form enctype= “ “> application/x-www-form-urlencoded: 지금까지 해온 form 태그 전송 인코딩 방식(디폴트) multipart/form-data: 파일 업로드 시 사용할 전송 인코딩   

2) 파일 업로드 폼 태그  <form action = “요청 주소” method= “post” enctype= “multipart/form-data”>  <input type = “file” name= “파라미터명”/> </form> 

 

3) 전송 처리 방식 -form -Ajax  

4)라이브러리 cos.jar: 2022년에 개발 종료. 보안에 좋지 못한 구조 * commons-fileupload: 일반적으로 많이 사용, 서블릿 스펙 3.0 이전 버전에서도 사용 가능  서블릿 3.0 이상: 3.0 이상부터는 자체적인 파일 업로드 처리 지원  -commons-io -commons-fileupload pom.xml에 추가 

 

5) 업로드된 파일 저장 위치 실제 파일: 서버 상에 저장-> 파일을 다시 서버에서 서비스 -> 사용자가 다시 파일을 볼 수가 있다.  파일의 경로만 DB 저장: DB에서 경로를 가져와 서버 이미지 저장된 폴더에서 파일을 찾아 브라우저에 보여줌. 

 

6) multipart지원해주는 세팅 필요) servlet-context.xml에 MultipartResolver 등록 maxUploadSize: 최대 업로드 가능한 크기 defaultEncoding: 문자 인코딩 처리  maxInMemorySize: 디스크에 임시 파일 생성하기 전에 메모리에 보관할 수 있는 최대 크기  7) Controller / jsp 폼페이지 만들기 

 

8) MultipartHttpServletRequest 인터페이스 스프링이 제공하는 인터페이스, 멀티파트 요청이 들어올 때 내부적으로 HttpServletRequest 대신 사용되는 인터페이스. -파일 정보 꺼내기 -파일 저장 경로 + 새 파일명으로 File 객체 만들기 -만들 File 객체로 파일 저장 .transferTo() 

 

2. 파일 다운로드 

다운로드는 브라우저 기능. 개발자가 해줄 것은 요청 경로와 파일 연결만 해주면 된다.    

    'Spring' 카테고리의 다른 글
    • [SpringBoot]2022/05/18: JPA, Entity, 페이징, Querydsl
    • [Spring] Day 15 파일 업로드 (Code)
    • [Spring] Day14 댓글 답글 달기 + 페이징 처리 (Code)
    • [Spring] Day16 결제 API (Code)

    티스토리툴바