티스토리 뷰

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();
			}
		}
}

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
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
글 보관함