ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 File 클래스 관련하여 나만의 정리
    Etc 2014. 4. 29. 10:10

    우선 DB와 연동을 하여야 하니깐  저장 할 것들을 계획해 놓자


    1. 저장 할것들

    1) 원본 파일 명

    2) 시스템 파일 명

    3) 확장자 명

    4) 디렉토리 경로

    5) 파일 사이즈


    2. 다중 파일 업로드


    내가 업무(뮤레카) 에서 사용하였던 방식을 토대로 정리 하였음 

    등록페이지 -> Input File -> 레이아웃 추가 -> name = "file" + layer_bt   -> hidden 을 통해 layer_bt 를 파라미터로 전달 -> OK페이지 - > 파라미터 받고 layer_bt를 반복문으로 돌리기 




    원본 파일 명을 따오기 위해서는 우선 기본적으로 파일 업로드시 등록 페이지에서 

    폼테그에 enctype="multipart/form-data"를 사용한다 그러고 나서 OK페이지에서는 MultipartRequest를 이용하여 업로드한 파일 및 text에서 입력한 값들을 getParameter로 받아온다.


    원본 파일명 따오기 ==> multi.getOriginalFileName(boo + i)   // boo 는 등록페이지에서의 name 값인 file을 뜻                                                                                       하고 i는 반복문을 돌린 값을 의미한다

    로컬 파일명 따오기 ==> "" + System.currentTimeMillis();     // "" 어떠한 값을 담기위해 작성한것이고                                                                                                  System.currentTimeMillis()는 현재 시간을 의미                                                                                      하는데 이것을 사용하는 이유는 머라할까 음.. 인                                                                                      젝션 방어 같은 개념? 이라고 생각하자



    확장자명 ==> getContextType OR 원본파일명.substring(원본파일명.lastIndexOf("."));

    // getContextType을 쓰게 되면  JPEG/JPG 이런식으로 나오는데 원본 파일명에 substring을 쓰게되면 .jpg이런식으로 나오게 된다  lastIndexOf(".") 을 사용하게 되면 일단 원본파일명에서 .이 있는 마지막 자리까지 잘라 내겠다는 의미가 된다




    로컬 파일명을 통하여 DB에 저장이 되지만  나의 업로드되는 디렉토리에는 원본 파일명으로 저장이 된다

    이것을 copyFile()메소드를 이용하여 저장되는 원본명을 시스템 파일명으로 변경하여 저장시키자


    여기가 하이라이트!!


    copyFile(a,b);    ==> a에서 b로  새롭게 복사한다고 생각을 하자


    우선은 원레 있던 파일을 임의 적으로 만들어 보자 (위에서의 a를 뜻함)


    File Old_File = multi.getFile(boo + i);  // 원본파일명을 getFile이라는 메소드를 통해서 File객체를 하나 만들어

                                                           놓았다


    그다음은 복사할 파일을 하나 만든다 (위에서의 b를 뜻함)


    File new_File = new File(디렉토리명 + "/" + 시스템 파일명);     // 즉 new_File은 시스템 파일명이 된다


    new_File = copyFile(Old_File , new_File);

    이것을 쓰기위해 이러한 긴 장문을 썼다!!!      즉 해석을 해보자면 

    원본파일명에 시스템 파일명을 덮어 씌우는 것을 의미한다 그래서 파일 업로드시 원본 파일명으로 디렉토리에 저장 되는것이 아닌 21312312313.jpg 라는 파일명으로 디렉토리에 저장이된다.








Designed by Tistory.