인프런 커뮤니티 질문&답변

ygh님의 프로필 이미지
ygh

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

스프링과 파일 업로드

안녕하세요! 질문이 있습니다.

작성

·

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패턴으로 강의가 진행됩니다.

감사합니다. 

ygh님의 프로필 이미지
ygh
질문자

OMG님! 답변 감사드립니다 :)

해결방법은 말씀해주신 리다이렉트를 쓰면 될 것 같은데,,,
혹시 초기에 파일업로드 수행시 완료 후 새로고침을 했을 때, 왜 이전에 수행했던 파일업로드가 또 수행될까요??

이것에 대해서도 궁금합니다!

아래 내용을 참고하시면 될 것 같습니다

참고

https://it-eldorado.tistory.com/68

ygh님의 프로필 이미지
ygh

작성한 질문수

질문하기