티스토리 뷰
HTTP 헤더 : Content-type
Message Body에 들어가는 데이터 타입을 HTTP 헤더의 Content-type 필드에서 설정할 수 있다. 필드에 여러 타입
을 설정해줄 수 있는데 그 중 하나가 multipart/form-data 타입이다.
form 태그
입력 데이터를 서버로 제출할 때 form 태그를 이용한다. form 태그 전송시 다음과 같은 속성이 있다.
- action : form이 전송되는 서버 URL
- method : form 전송 방법
- enctype : form 데이터가 서버로 전송될 때 데이터가 인코딩되는 방법 기재
enctype
form 태그의 enctype 속성은 폼 데이터가 서버로 제출될 때 데이터가 인코딩되는 방법을 명시합니다. 해당 속성은
form의 method 속성 값이 post인 경우에만 사용할 수 있다.
- application/x-www-form-urlencoded : 기본값으로 모든 문자들을 서버로 보내기 전 인코딩됨을 의미한다.
- text/plain : 모든 문자를 인코딩하지 않음을 의미. 파일이나 이미지를 서버로 전송할 때 사용한다.
- multipart/form-data : 모든 문자를 인코딩하지 않고 form이 파일이나 이미지를 서버로 전송할 때 사용한다.
MultipartFile 인터페이스
multipart 요청으로 수신된 업로드 파일을 나타낸다. 파일내용은 메모리에 저장되거나 일시적으로 디스크에 저장
된다. 사용자는 파일내용을 세션 레벨에서 복사할 책임이있고 원한다면 영구적으로 저장할 책임이 있다. 일시적인 저장공간은 요청 프로세스가 끝나면 비워질 것이다. (번역체,,)
@Override
public void uploadMountainAuthPostImage(String member_id, int climb_post_num,
MultipartFile[] multipartFile) {
awsS3Service.setRegion(REGIONNAME);
int fileCount=0;
for(MultipartFile file : multipartFile) {
StringBuilder builder = new StringBuilder(member_id);
ObjectMetadata metadata = new ObjectMetadata();
String fileName = file.getOriginalFilename();
log.info(fileName);
String extension = fileName.substring(fileName.indexOf(".")+1);
log.info(extension);
if(extension.equalsIgnoreCase("jpg")) {
log.info(extension);
metadata.setContentType(MediaType.IMAGE_PNG_VALUE);
} else if(extension.equalsIgnoreCase("gif")) {
metadata.setContentType(MediaType.IMAGE_GIF_VALUE);
} else if(extension.equalsIgnoreCase("png")) {
metadata.setContentType(MediaType.IMAGE_PNG_VALUE);
}
metadata.setContentLength(file.getSize());
builder.append("/" + climb_post_num + "/");
builder.append((++fileCount) + "_" + file.getOriginalFilename());
try {
awsS3Service.putObject(BUCKETNAME, builder.toString(),
file.getInputStream(), metadata);
} catch (SdkClientException | IOException e) {
e.printStackTrace();
}
}
}
'Spring' 카테고리의 다른 글
[Spring] Spring Multi Module (0) | 2023.07.30 |
---|---|
Spring Boot 에서 GraphQL 사용하기 (1) (0) | 2022.11.13 |
[Spring] Spring Security 프레임워크 (2) : Spring Security 인증인가 동작과정 (0) | 2022.01.20 |
[Spring] Spring Security 프레임워크 (1) (0) | 2022.01.19 |
[Spring] 스프링 MVC와 스프링 MVC 구조 (0) | 2022.01.18 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- level0
- OS
- Travis CI
- Til
- Java
- ci/cd
- SpringSecurity
- JPA
- 네이버클라우드
- graphql
- SpringGraphQL
- 파일업로드설정
- 트랜잭션격리성
- TCP
- Oracle
- ddl-auto
- 람다식
- AWS
- 기술면접
- 프로그래머스
- ORA-27125
- CodeDeploy
- 트랜잭션
- db
- N+1
- 인덱스
- nginx
- 운영체제
- spring
- EC2
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
글 보관함