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 |