작성
·
80
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
여기에 질문 내용을 남겨주세요.
@PostMapping("/upload")
public String saveFile(@RequestParam("itemName") String itemName, @RequestParam("file") MultipartFile file) throws IOException {
if (!file.isEmpty()){
String fullPath = fileDir + file.getOriginalFilename();
log.info("파일저장 fullPath={}",fullPath);
file.transferTo(new File(fullPath));
}
return "upload-form";
}
SpringUploadController 에 있는 savFile 입니다.
@RequestParam String itemName 없어도 되는거죠 ?
@RequestParm MultipatrFile file은 현재 파일이 빈값인지 아닌지 확인해야하기때문에 필요한거같은데 itemName은 필요가없을거같아서요 view단에서 값을 넘겨야하는것도 없는거같구요 답변 부탁드립니다 ~
답변 1
0
안녕하세요. deoksam님, 공식 서포터즈 y2gcoder입니다.
먼저 강의 자료에 있는 코드와 살짝 다른 것 같습니다.
@Slf4j
@Controller
@RequestMapping("/spring")
public class SpringUploadController {
@Value("${file.dir}")
private String fileDir;
@GetMapping("/upload")
public String newFile() {
return "upload-form";
}
@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 "upload-form";
}
}
upload-form.html 도 다른 것 같습니다 🙂
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
</head>
<body>
<div class="container">
<div class="py-5 text-center">
<h2>상품 등록 폼</h2>
</div>
<h4 class="mb-3">상품 입력</h4>
<form th:action method="post" enctype="multipart/form-data">
<ul>
<li>상품명 <input type="text" name="itemName"></li>
<li>파일<input type="file" name="file" ></li>
</ul>
<input type="submit"/>
</form>
</div> <!-- /container -->
</body>
</html>
강의 자료에서는 upload-form.html 에서 itemName에 값을 넣어 폼데이터로 POST 요청을 보내고 있고, 컨트롤러에서는 폼데이터와 파일 데이터를 함께 받을 수 있는 것을 로그와 함께 보여줄 수 있는 코드를 보실 수 있습니다 🙂
감사합니다.