파일 말고 폴더(경로)를 입력할 경우 폴더 자체가 삭제되나요?

아니면 폴더가 아니라서 그냥 패스되는 지 궁금합니다...

 

현재 파일 삭제시 특정 위치에 저장된 폴더 자체를 날려버릴려고 합니다..ㅇㅅㅇ;;;

 

참고로 라이믹스입니다.

  • profile
    기진곰 2016.07.26 16:14:49

    removeFile()은 이름 그대로 파일만 삭제합니다. 폴더 삭제는 removeDir()입니다. 단, 폴더 내에 파일이 너무 많으면 한번에 삭제되지 않고 타임아웃에 걸릴 수도 있으니 주의하세요.

     

    라이믹스에서는 Rhymix\Framework\Storage 클래스를 직접 호출하셔도 됩니다. FileHandler를 사용해도 내부적으로 모두 라이믹스 프레임워크로 연결되거든요. 물론 XE와 호환되어야 한다면 FileHandler를 쓰시고요.

    1
  • profile
    하늘희 2016.07.26 16:17:52

    오 감사합니다.
    removeDir 도 있었꾼요..ㅠㅠ
    파일은 그다지 많지 않아서(20개내외?) 딱히 상관은 없을 듯 합니다. 호환성은 잘 모르겠네요..크킄

  • profile
    하늘희 2016.07.26 16:29:34
    오 기진곰님 라이믹스에 그 때 이슈 남긴 게 적용되어 있나요?
    파일이 하나도 존재하지 않으면 자동으로 폴더를 삭제하는 듯 한데요..!

    (아니면 제가 실수한걸까요? ㅋㅋ)
  • profile
    기진곰 2016.07.26 16:31:29
    원래 removeDir()을 쓰면 내용뿐 아니라 폴더까지 모두 삭제되는 게 정상인데요... 버그가 있었다면 리팩토링하다가 우연히 고쳐졌을 수도 있겠네요 ㅋㅋ
  • profile
    하늘희 2016.07.26 16:36:54

    원래 files/attach/images/모듈번호/파일번호3/파일번호3/파일
    이렇게 저장되잖아욥..?

    지금 저는 파일 업로드시 자동으로 썸네일 생성하게 하려고
    files/attach/images/모듈번호/파일번호뒷3/파일번호앞3/파일
    files/attach/images/모듈번호/파일번호뒷3/파일번호앞3/파일썸네일폴더/썸네일이미지들

    이렇게 되어 있거든요..

    그래서 파일삭제할 때 file 모듈 컨트롤러에서

    deleteFile 함수 중 FileHandler::removeFile($uploaded_filename); 이 함수 다음에

    /* test delete*/
    if(preg_match('/(.+)test\.(jpg|jpeg|png)$/',$uploaded_filename,$m))
    {
    $thumbnail= $m[1].'thumbnails/';

    $log = $m[1].'log.txt';
    FileHandler::removeDir($thumbnail);

    FileHandler::removeFile($log);
    }

    이렇게 해놨거든요

    일단 디버그 찍어 보니까

    정상적으로 thumbnail 폴더로 되는 걸 확인했는데,

    삭제되는 결과물을 보니까

    files/attach/images/모듈번호/파일번호뒷3/파일번호앞3/ 여기서 파일번호앞3도 같이 삭제되더라구요.ㅎㅎ

    그래서 이전에 이슈 등록한게 적용된 건가 해서요...!

    어 음 일단 파일 하나 남겨서 파일이 있는 데도 삭제되는지 확인해보고 댓글 달게요.

  • profile
    기진곰 2016.07.26 16:40:09

    아, 그런 이슈를 등록하신 적이 있었죠. 아직 거기에 대해서는 조치한 것이 없다고 알고 있는데요...

  • profile
    하늘희 2016.07.26 16:41:49
    https://github.com/rhymix/rhymix/issues/509

    네 이 이슈였습니다. (원래 되던 거였나봅니다..ㄷㄷ)
  • profile
    하늘희 2016.07.26 16:39:02
    오 맞네요 파일이 있으면 삭제안되네요

    정확히는 removeFile(); 이 함수에서 체크하나봅니다.ㅎㅎ 확인은 안해봤지만...

서버에 요청 중입니다. 잠시만 기다려 주십시오...