실습1 - fileUpload

안예진·2021년 4월 30일
0

spring

목록 보기
5/5
  1. spring legacy project 생성

  2. pom.xml에서 자바버전 1.8 / 스프링버전 5.2.6.RELEASE 로 변경

  3. maven > update project 또는
    properties > project faucets > java1.8로 변경 해서 적용하기

  4. pom.xml에 Apache Common FileUpload mvn dependency 추가

<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.4</version>
</dependency>
  1. servlet-context.xml에 multipartResolver 추가
<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
</beans:bean>
  1. home.jsp에 파일등록 form 추가
<form action="file_upload" method="post" enctype="multipart/form-data">
	<input type="file" name="myfile">
	<input type="submit" name="submitBtn" value="ok">
</form>
  1. HelloController 작성
import java.io.File;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.web.multipart.MultipartFile;


	@Autowired
	ResourceLoader rsLoader;

	@PostMapping("/file_upload")
	public String fileUpload(MultipartFile myfile) throws IllegalStateException, IOException { // jsp 파일 name과 변수명 맞추기
		System.out.println("파일 업로드 "+myfile.getOriginalFilename());
		//myfile.transferTo(new File("C:/ssafy/ssafy_"+myfile.getOriginalFilename())); //내가 저장하고 싶은 곳

		String filename = myfile.getOriginalFilename();
		filename = new String(filename.getBytes("8859_1"),"utf-8");	

		Resource resource = rsLoader.getResource("resources/upload"); //상대경로
		myfile.transferTo(new File(resource.getFile().getCanonicalPath()+
				"/"+filename)); //내가 저장하고 싶은 곳
		System.out.println("저장성공");
		return "redirect:/";
	}
  • MultipartFile로 myfile을 받아야한다
  • 현재는 로컬테스트이기 때문에 tomcat의 운영 서버 내 폴더에 파일이 다운로드 된다
    해당 파일은 C:\test\sts-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\zFileUpload\resources\upload 경로에 저장되었다.

파일 저장시 한글 깨짐 처리

filename = new String(filename.getBytes("8859_1"),"utf-8");	

참고 : https://entro80.tistory.com/17

profile
에국은 에구구구...

0개의 댓글

관련 채용 정보