본문 바로가기
프로젝트/학습관리시스템(LMS)

파일 업로드 구현

by 허정주 2022. 11. 19.

배너는 화면에 이미지를 보여주는 것은 파일 업로드가 진행되어야함

강좌 등록 화면에서 업로드 진행

  • 첨부파일 부분 추가, form의 enctype지정
  • 컨트롤러의 메소드에서 파라미터에 MultipartFile추가하여 저장 메소드 구현
String saveFilename = "";
String urlFilename = "";

if (file != null) {
	String originalFilename = file.getOriginalFilename();
            
String baseLocalPath = "/Users/dd/git/fastlms/fastlms/files";
            String baseUrlPath = "/files";
            
            String[] arrFilename = getNewSaveFile(baseLocalPath, baseUrlPath, originalFilename);
    
            saveFilename = arrFilename[0];
            urlFilename = arrFilename[1];
            
            try {
                File newFile = new File(saveFilename);
                FileCopyUtils.copy(file.getInputStream(), new FileOutputStream(newFile));
            } catch (IOException e) {
                log.info("############################ - 1");
                log.info(e.getMessage());
            }
        }
        
        parameter.setFilename(saveFilename);
        parameter.setUrlFilename(urlFilename);
  • 새로운 파일이 들어왔을 때 날짜, 월, 일 별로 폴더를 만들어 랜덤한 이름으로 저장되는 메소드 구현

 

□ 외부 파일을 화면에 출력 

  • 톰캣의 server.xml에 아래 문구 추가
<Context docBase="/파일경로" path="/files" reloadable="true"/>

 

  • 이미지를 넣기 위해서 경로를 configuration에서 허용해주어야함
@Override
public void configure(WebSecurity web) throws Exception {
	
	web.ignoring().antMatchers("/favicon.ico", "/files/**", "/fastlms/files/**");
	
	super.configure(web);
}

 

  • 강좌별로 이미지를 저장해야 하므로 course, courseinput, coursedto에 filename과 urlfilename 필드 모두 추가 하면 course별로 파일 경로가 저장됨