Select Git revision
FileController.java
FileController.java 2.43 KiB
package umc.spring.file.controller;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import umc.spring.file.service.AmazonS3Service;
import umc.spring.file.service.S3Service;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/file")
public class FileController {
private final AmazonS3Service amazon3SService;
@PostMapping("/uploads")
public ResponseEntity<Object> uploadFiles(
@RequestParam(value = "uploadFilePath") String uploadFilePath,
@RequestPart(value = "files") List<MultipartFile> multipartFiles) {
return ResponseEntity
.status(HttpStatus.OK)
.body(amazon3SService.uploadFiles(uploadFilePath, multipartFiles));
}
@DeleteMapping("/delete")
public ResponseEntity<Object> deleteFile(
@RequestParam(value = "uploadFilePath") String uploadFilePath,
@RequestParam(value = "uuidFileName") String uuidFileName) {
return ResponseEntity
.status(HttpStatus.OK)
.body(amazon3SService.deleteFile(uploadFilePath, uuidFileName));
}
@GetMapping("/get")
public void getFile(HttpServletResponse response,
@RequestParam String uploadFilePath,
@RequestParam String uuidFileName) {
try {
InputStream inputStream = amazon3SService.getFile(uploadFilePath, uuidFileName);
if (inputStream != null) {
byte[] buffer = new byte[4048];
int bytesRead;
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
try (OutputStream outStream = response.getOutputStream()) {
while ((bytesRead = inputStream.read(buffer)) != -1) {
outStream.write(buffer, 0, bytesRead);
}
}
} else {
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
}
} catch (Exception e) {
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
}
}
}