Form 형식으로 파일을 서버에 업로드하는 방법에 대해 알아보자!
JSP 파일에서 사용자에게 파일을 받는다
➡︎ Controller로 파일을 전송한다
➡︎ Controller에서 Service / DAO 파일을 통해 mapper로 접근한다
➡︎ mapper에서 insert 쿼리를 실행한다
<input class="form-control file" type="file" name="file" id="file" multiple>
<form method="POST" enctype="multipart/form-data" id="uploadForm" action="<%=request.getContextPath()%>/communityInfo/write/create">
<input class="form-control file" type="file" name="file" id="file" multiple>
<button class="btn btn-primary submit-btn bottom-btn" type="submit">
</form>
method="POST"
enctype="multipart/form-data"
id="uploadForm"
action="<%=request.getContextPath()%>/communityInfo/write/create">
type="submit"
@RequestMapping(value = "/communityInfo/write/create", method = RequestMethod.POST)
@ResponseBody
public ModelAndView createCommunityInfo(ModelAndView mv, MultipartHttpServletRequest request, MultipartFile file) {
FileDTO infoFile = new FileDTO();
MultipartFile newfile = request.getFile("file");
String originalUrl = newfile.getOriginalFilename();
infoFile.setCommunityInfoId(recentId);
infoFile.setOriginalUrl(originalUrl);
communityInfoService.creatCommunityInfoFile(infoFile);
String saveDir = request.getSession().getServletContext().getRealPath("/resources/upload/file");
File dir = new File(saveDir);
if (!dir.exists()) {
dir.mkdirs();
}
if (!newfile.isEmpty()) {
String ext = originalUrl.substring(originalUrl.lastIndexOf("."));
try {
newfile.transferTo(new File(saveDir + "/" + originalUrl));
} catch (IllegalStateException | IOException e) {
e.printStackTrace();
}
}
mv.setViewName("redirect:/communityInfo");
return mv;
}
// CommunityInfoServiceImpl
@Service
public class CommunityInfoServiceImpl implements CommunityInfoService {
@Autowired
CommunityInfoDAO communityInfoDAO;
@Override
public int creatCommunityInfoFile(FileDTO communityInfoFile) {
return communityInfoDAO.creatCommunityInfoFile(communityInfoFile);
}
}
// CommunityInfoDAOImpl
@Repository
public class CommunityInfoDAOImpl implements CommunityInfoDAO {
@Autowired
private SqlSessionTemplate sqlSession;
private String namespace = "CommunityInfo";
@Override
public int creatCommunityInfoFile(FileDTO communityInfoFile) {
sqlSession.insert(namespace+".creatCommunityInfoFile", communityInfoFile);
return 0;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="CommunityInfo">
<!-- 커뮤니티 공지사항 파일 업로드 쿼리 -->
<insert id="creatCommunityInfoFile"
parameterType="com.walab.hgu.DTO.FileDTO">
INSERT INTO hguclub.communityInfoFile (communityInfoId, originalUrl)
VALUES (#{communityInfoId}, #{originalUrl})
</insert>
</mapper>