Skip to content
Snippets Groups Projects
Select Git revision
  • fb96f2c3a56e6ba6cbe32584d8a6efd4e426fb42
  • master default protected
2 results

FileController.java

Blame
  • 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);
            }
        }
    }