|
36 | 36 | @RequiredArgsConstructor
|
37 | 37 | public class VideoService {
|
38 | 38 | private final S3Client s3Client;
|
39 |
| - public VideoRes createFolder(){ |
40 |
| - String folderName = UUID.randomUUID().toString(); |
41 |
| - return VideoRes.of(folderName); |
42 |
| - } |
| 39 | +// public VideoRes createFolder(){ |
| 40 | +// String folderName = UUID.randomUUID().toString(); |
| 41 | +// return VideoRes.of(folderName); |
| 42 | +// } |
43 | 43 |
|
44 | 44 | public S3ObjectInputStream getFile(String imageUrl) {
|
45 | 45 | // Business Logic
|
@@ -132,7 +132,7 @@ public String getFilename() {
|
132 | 132 |
|
133 | 133 |
|
134 | 134 | //flask에 이미지, 동영상 보내기
|
135 |
| - public ResponseEntity<Resource> sendToFlaskWithImagesAndVideo(String folderName, VideoReq videoReq) throws IOException{ |
| 135 | + public VideoRes sendToFlaskWithImagesAndVideo(String folderName, VideoReq videoReq) throws IOException{ |
136 | 136 | // 동영상 파일 가져오기
|
137 | 137 | S3ObjectInputStream videoFile = s3Client.get(folderName + "/" + videoReq.videoName());
|
138 | 138 | byte[] videoContent = IOUtils.toByteArray(videoFile);
|
@@ -183,7 +183,61 @@ public String getFilename() {
|
183 | 183 | ByteArrayResource resource = new ByteArrayResource(response.getBody());
|
184 | 184 |
|
185 | 185 | //여기에 나중에 update 구현
|
186 |
| -// s3Client.update(folderName + "/" + videoReq.videoName(),) |
| 186 | + s3Client.update(folderName + "/" + videoReq.videoName(), (MultipartFile) resource); |
| 187 | + return VideoRes.of(folderName, videoReq.videoName(), null); |
| 188 | + } |
| 189 | + |
| 190 | + //flask에 이미지, 동영상 보내기 |
| 191 | + public ResponseEntity<Resource> sendToFlaskWithImagesAndVideoTest(String folderName, VideoReq videoReq) throws IOException{ |
| 192 | + // 동영상 파일 가져오기 |
| 193 | + S3ObjectInputStream videoFile = s3Client.get(folderName + "/" + videoReq.videoName()); |
| 194 | + byte[] videoContent = IOUtils.toByteArray(videoFile); |
| 195 | + |
| 196 | + // 이미지 파일들을 바이트 배열로 변환하여 리스트에 추가 |
| 197 | + List<byte[]> imageContents = new ArrayList<>(); |
| 198 | + for (String imageName : videoReq.imageName()) { |
| 199 | + // 이미지 파일 가져오기 |
| 200 | + S3ObjectInputStream imageFile = s3Client.get(folderName + "/" + imageName); |
| 201 | + byte[] imageContent = IOUtils.toByteArray(imageFile); |
| 202 | + imageContents.add(imageContent); |
| 203 | + } |
| 204 | + |
| 205 | + // Multipart 요청 생성 |
| 206 | + MultiValueMap<String, Object> body = new LinkedMultiValueMap<>(); |
| 207 | + body.add("video", new ByteArrayResource(videoContent) { |
| 208 | + @Override |
| 209 | + public String getFilename() { |
| 210 | + return videoReq.videoName(); // 동영상 파일 이름 가져오기 |
| 211 | + } |
| 212 | + }); |
| 213 | + |
| 214 | + // 이미지 파일들을 요청에 추가 |
| 215 | + for (int i = 0; i < imageContents.size(); i++) { |
| 216 | + byte[] content = imageContents.get(i); |
| 217 | + final String imageName = videoReq.imageName().get(i); |
| 218 | + body.add("image" + (i + 1), new ByteArrayResource(content) { |
| 219 | + @Override |
| 220 | + public String getFilename() { |
| 221 | + return imageName; // 이미지 파일 이름 가져오기 |
| 222 | + } |
| 223 | + }); |
| 224 | + } |
| 225 | + |
| 226 | + body.add("imageSize",imageContents.size()); |
| 227 | + |
| 228 | + // HTTP 요청 설정 |
| 229 | + HttpHeaders headers = new HttpHeaders(); |
| 230 | + headers.setContentType(MediaType.MULTIPART_FORM_DATA); |
| 231 | + HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(body, headers); |
| 232 | + |
| 233 | + // Flask 서버로 요청 보내기 |
| 234 | + RestTemplate restTemplate = new RestTemplate(); |
| 235 | + String url = "http://127.0.0.1:5000/video"; // Flask 서버 URL |
| 236 | + ResponseEntity<byte[]> response = restTemplate.postForEntity(url, requestEntity, byte[].class); |
| 237 | + |
| 238 | + // Flask에서 반환된 파일을 다시 클라이언트에게 반환 |
| 239 | + ByteArrayResource resource = new ByteArrayResource(response.getBody()); |
| 240 | + |
187 | 241 | return ResponseEntity.ok()
|
188 | 242 | .contentType(MediaType.APPLICATION_OCTET_STREAM)
|
189 | 243 | .body(resource);
|
|
0 commit comments