Spring file upload를 하려고 하다보니 꼬리에 꼬리를 물고 찾아볼 것들이 나온다...

8th refactoring은 언제하지...


1. Spring file upload

@RequestParam("file") MultipartFile file 

이랑  

 File transferFile = new File(uploadDir  + file.getOriginalFilename()); 

file.transferTo(transferFile);


를 적절히 잘 사용하면 upload된다.


Q1) MultipartFile vs File vs Http Multipart Request vs CommonMultipartFile

용도의 차이를 알아봐야겠다.


2. file update을 위해서 

2.1 file delete 

public @ResponseBody String boardFileDelete() {

        String path = "C:\Users\Public\Pictures\Sample Pictures\abc.jpg" // 삭제할 파일의 경로

 

File file = new File(path);

if(file.exists() == true){

file.delete();

}

return null;

} 

를 쓴다. 

그런데 파일 삭제 소스를 찾다가  이런글을 보았다.


"주의하실 점은 파일 삭제는 서블릿 엔진(servlet container)이 종료될 때(리스너를 통해서) 한꺼번에 삭제하시는 게 좋겠죠. 서블릿 엔진 구동중에 삭제하려고 하면 락이 걸려서 안 지워질 수도 있으니까요."


Q1) *여기에서 논외로 리스너가 궁굼해졌다. 안그래도 listener class에 정확한 용도가 이해가 되지 않았는데, 단지 서버가 올라갈때 먼저 참조하는 xml파일을 알려주는 걸로(?)만 알고있었다. 여기에서 다시한번 리스너가 나오니 정말 뭔지 모르겠다.


Q2) *위의 말대로 홈페이지가 운영된다면, 서버는 삭제할 파일의 리스트들을 가지고 있다가 정기적으로 서버가 내려가는 시간마다 일괄삭제를 한다는 건가? 그렇다면 그동안에는 file을 홈페이지에서 볼 수 없게 하는 건가?


*update를 위해 단순히 삭제하고 그 경로에 새로 올릴 수는 있는데 실제 홈페이지는 어떻게 동작하는 건지 모르겠다.


3. 구글링을 하다보니 Monitoring a File for changes 에 관한 얘기가 나온다. 이것도 실제로 홈페이지에서 많이 쓰이지? 어떤용도로 필요하지?

+ Recent posts