[UMC 3기] Vibecap

http 통신을 이용해 클라이언트로부터 이미지 파일을 받는 방법.

Controller

form-data 형식으로 data를 전달받는다.

@RestController
@RequestMapping("/capture")
public class ImageController {

    @Autowired
    ImgService imgSvc;

    @PostMapping("")
    String captureVibe(
            @RequestParam("userId") String userId,
            @RequestParam(value = "image", required = false)MultipartFile imgFile) {

        if (imgFile.isEmpty())
            return "no image!";

        String savedFileName;

        try{
            savedFileName = imgSvc.saveFile(imgFile);
        } catch (Exception e) {
            return "[ERROR] " + e.getMessage();
        }

        return savedFileName;

    }
}

Service

@Service
public class ImgService {

    // 이미지 파일이 저장될 디렉토리 경로 (자신의 로컬 환경에 맞게 수정해야함)
    private static String dirPath =  "/Users/mingeun/Vibecap/prototype01/capturedImgs/";

    public String saveFile(MultipartFile file) throws IOException, IllegalStateException {

        if (file.isEmpty())
            return null;

		// 파일 원래 이름
        String originalName = file.getOriginalFilename(); 
		// 파일 식별자
		String uuid = UUID.randomUUID().toString(); 
		// 파일 확장자 추출
        String extension = originalName.substring(originalName.lastIndexOf("."));
		// 이미지 파일의 새로운 이름
        String savedName = uuid + extension;  
		 // 파일 경로
        String savedPath = dirPath + savedName;

		// 파일 저장
        file.transferTo(new File(savedPath)); 

        return savedPath;
    }
}

test

postman test

references

Comments