질문 Q #15544
zip library 압축 후 삭제 관련 질문드립니다.
돼지바뿅뿅 2016-10-12 09:41:05

안녕하세요. 선배님들

날씨가 많이 쌀쌀해졌습니다. 

감기조심하세요 ㅎㅎ

 

제가 지금 다중 다운로드(?)를 만들고있는데요,

리스트에서 checkbox로 선택된 파일들을 한번에 다운받는건데...

zip libarary를 사용해서 압축후에 다운로드 받을 수있도록 해놨습니다.

 

어찌저찌 다운로드까지는 되는데...

 

$this->zip->download('test.zip');

 

다운 이후에 압축한 파일을 지우고 싶어서

 

unlink('경로/test.zip');

했는데.. 지워지지가않네요..

 

경로를 빼고 해봐도안되고,

CI에 있는 file_delete 를 사용해도 안되더군요... 

$this->zip->download() 날린 시점 에서 끝나는건가요?

 

파일 다운로드 후 다운받은 파일 삭제하는 좋은 방법이 있을까요?

답변 7
#1 뫄뫄잉뿌 2016-10-12 10:08:38
경로가 정확한지 확인해보셨나요?
#2 돼지바뿅뿅 2016-10-12 10:13:33

@뫄뫄잉뿌

경로는 정확하구요..

현재 코드가

if($this->zip->download('test.zip'))

{

   unlink('경로/test.zip');

}

 

이렇게되어있는데요...다운로드까지는 잘되는데..삭제가 되지않습니다..

#3 변종원(웅파) 2016-10-12 10:16:34
디렉토리 권한(퍼미션) 체크해보세요
#4 kaido 2016-10-12 10:34:30

리룩스 이면.. 

chmod -R 775  경로
chown -R apache.root 경로

권한과 소유자 둘다 변경. web 에서 실행하는 권한은 apache 입니다.

#5 돼지바뿅뿅 2016-10-12 10:46:47

@변종원(웅파), @kaido

폴더 권한에서는 문제가없습니다...

현재 제 로컬에서 테스트 중인 작업이라.. 윈도우이며, 등록 / 삭제 아무이상없이 됩니다..

다운로드 소스를 보시면

 

//업로드하며 변경된 파일명을 원본 파일명으로 복사

$old_file = '경로/파일명';

$new_file = '경로/원본파일명';

copy($old_file, $new_file);

//복사된 파일을 압축

$this->zip->read_file($new_file);

$this->zip->archive('경로/test.zip');

//복사된 원본 파일 삭제

unlink($new_file);

 

위의 소스가 for문을 돌면서 여러 파일을 test.zip 파일로 압축 시킵니다.

압축 시키며 복사되었던 원본파일명을 가진 파일은 삭제가 됩니다.

이후 압축된 파일을 다운로드 받습니다.

if($this->zip->download('test.zip'))

{

   unlink('경로/test.zip');

}

 

그런데, 이때 위에서 복사된 원본파일명은 정상적으로 삭제되는 반면,

압축된 파일은 다운로드까진 정상적으로 진행되나, 그 이후에 삭제가 되지 않습니다.

 

 

 

#6 돼지바뿅뿅 2016-10-12 11:39:11

여러 테스트 중에 알게되었는데;;

$this->zip->download()

 

이후엔 작동이 멈추는것같습니다..

 

그래서 편법이지만 해당 페이지에 들어올때 압축된 파일을 검색해서 있으면 삭제하도록했습니다;

 

더좋은 방법이 있으면 조언 부탁드립니다.

#7 변종원(웅파) 2016-10-12 12:30:27
해당 함수 내용 따라가다보면 제일 마지막에 exit가 있네요. 
exit($data);