API - MultipartFile 파일전송

배고픈 징징이 ㅣ 2023. 1. 19. 14:36

1. Controller에서 multipart/form-data 수신

--------- CONTORLLER ---------
public ResponseEntity<?> insertUpload(@Valid UploadRequest request) {
	return ResponseEntity.ok(reelsService.insertUpload(request));
}


---------- VO ---------
@Getter
@Setter
public class UploadRequest {
    @NotNull
    private MultipartFile video;

    .....
}

 

2. Serivce에서 API 통신

public boolean insertUpload(UploadRequest request) {
	try {
		HttpClient httpClient = HttpClientBuilder.create().build();

		String userid = "비밀";
		String categoryName = "";
		String url = "https://api.midibus.kinxcdn.com/v1/upload/" + userid + "/" + categoryName;
		HttpPost post = new HttpPost(url);

		String token = (String)getToken().get("Token");
		String channel = "ch_17d15a2c"; //기본 채널
		post.setHeader("X-Mbus-Token", token);
		post.setHeader("X-Mbus-Channel", channel);

		File convertFile = new File(request.getVideo().getOriginalFilename());
		convertFile.createNewFile();
		FileOutputStream fos = new FileOutputStream(convertFile);
		fos.write(request.getVideo().getBytes());
		fos.close();

		MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
		entityBuilder.addBinaryBody("file", convertFile);

		post.setEntity(entityBuilder.build());

		HttpResponse response = httpClient.execute(post);
		String str = IOUtils.toString(response.getEntity().getContent(), "UTF-8");

		ObjectMapper mapper = new ObjectMapper();
		Map map = mapper.readValue(str, Map.class);

		String mediaId = (String)map.get("mediaId");

		return true;
	}catch (Exception e){
		e.getMessage();
		e.printStackTrace();

		throw new TenCommonException(TenErrorCodeEnum.SERVER_ERROR, "[Reels] UPLOAD ERROR");
	}
}
반응형

'Java' 카테고리의 다른 글

[안전한 객체 생성법] Builder 패턴 + Assert  (0) 2023.01.19
@Valid - 객체 유효성체크  (0) 2023.01.19
COLLECTION  (0) 2023.01.19
DTO, DAO, VO 란?  (0) 2023.01.19
Filter 와 Interceptor  (0) 2023.01.19