작성
·
361
0
안녕하세요! 언제나 좋은 강의 감사드립니다 :)
파일업로드 예제에 대해 실습하면서 의문사항이 생겨 질문 드립니다.
처음 파일업로드를 완료한 상태에서, 따로 파일을 선택하지 않은 상태에서 웹브라우저를 새로고침하면, 저절로 이전에 파일업로드 처리가 완료된 POST /upload API 요청이 한번 더 나가서 파일업로드 처리가 한번 더 수행됩니다.
이럴경우, 사용자가 의도하지 않았는데도 파일업로드 처리가 될 우려가 있을 것 같고, 서버 측에서도 괜히 파일업도르 처리를 한번 더 수행하는 상황이 생길거 같은데,,,
왜 api call이 한번 더 나가는 걸까요??
아니면 혹시 해결법이 있을까요? 리다이렉트를 수행시키면 될까요??
답변 1
2
안녕하세요. ygh님, 공식 서포터즈 OMG입니다.
아래와 같이 redirect시키면 문제를 해결하실 수 있습니다.
@PostMapping("/upload")
public String saveFile(@RequestParam String itemName,
@RequestParam MultipartFile file, HttpServletRequest request) throws IOException {
log.info("request={}", request);
log.info("itemName={}", itemName);
log.info("multipartFile={}", file);
if (!file.isEmpty()) {
String fullPath = fileDir + file.getOriginalFilename();
log.info("파일 저장 fullPath={}", fullPath);
file.transferTo(new File(fullPath));
}
return "redirect:/spring/upload";
}
파일업로드에 초점을 두어 크게 신경쓰지 않으신걸로 보입니다.
관련하여 MVC1편에서 PRG패턴으로 강의가 진행됩니다.
감사합니다.
OMG님! 답변 감사드립니다 :)
해결방법은 말씀해주신 리다이렉트를 쓰면 될 것 같은데,,,
혹시 초기에 파일업로드 수행시 완료 후 새로고침을 했을 때, 왜 이전에 수행했던 파일업로드가 또 수행될까요??
이것에 대해서도 궁금합니다!