개발 Q&A

제목 zip파일로 압축 과정에서의 오류 문의.
카테고리 PHP
글쓴이 madman 작성시각 2016/12/09 16:08:44
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 14314   RSS

아래의 URL을 참조하여 사내 서버에 올려둔 mp3를 배열로 묶어 다운받을 수 있도록 작성해봤습니다. http://php.net/manual/kr/class.ziparchive.php (A way of zipping files and downloading them thereafter 부분 참조) 

 

$files = array('http://1번.mp3','http://2번.mp3'); 
$zipname = 'zipped_file.zip'; 
$zip = new ZipArchive; 
$zip->open($zipname, ZipArchive::CREATE); 
foreach ($files as $file) { 
  $zip->addFile($file); 
} 
$zip->close(); 

header('Content-Type: application/zip'); 
header('Content-disposition: attachment; filename='.$zipname); 
header('Content-Length: ' . filesize($zipname)); 
readfile($zipname); 

 

위 코드대로 실행하면 zip파일이 다운은 되는데, 다운된 zip파일을 열어보면 아무 것도 없고 압축 파일이 아닌 것같다고만 나옵니다. 

 

 

그래서 아래의 코드대로 해보면 다운은 정상적으로 되긴 하는데... 2개의 파일을 압축해야 하는건지라 $path 부분을 배열로 바꿔보면 작동을 하지 않네요. 

$path = '/home/www/common/media_file/_TEST_1.mp3';
$this->zip->read_file($path);
$this->zip->download('mp3.zip');

 

 

 

마지막 방법으로는

 

		$data = array('teacher.mp3' => 'http://1번.mp3', 'student.mp3' => 'http://1번.mp3');

		foreach($data as $item)
		{
			$this->zip->read_file($item);
			$this->zip->download('mp3.zip');
		}

 

이렇게 해보면 teacher.mp3와 student.mp3 이렇게 2개로 압축되서 다운은 받아지는데 열어보면 파일이 빈것으로 나오구요. 

 

궁극적인 목적인 앞에서도 언급했지만, 각기 다른 서버에 올려져있는 mp3파일들을 하나의 zip 파일로 압축해서 다운 받게 하는건데... 생각만큼 잘 풀리지가 않네요.  도대체 어떻게 해야할지... 좋은 방법이나 팁 공유 부탁 좀 드리겠습니다.  

 다음글 한페이지에 두개의 페이징을 구현할려고 합니다. (2)
 이전글 로그인 페이지 접속시 아이디와 비밀번호가 바로 적어져있... (1)

댓글

변종원(웅파) / 2016/12/09 16:44:23 / 추천 0

첫번째에서 http://주소 형태로 해서 안되는걸 겁니다. 두번째처럼 /home/위치/파일명 형태로 해보세요.

다른 서버에 있는 것은 fopen이나 file_get_contents 같은 함수로 열어서 처리해야 합니다.

게시판 이동합니다.

madman / 2017/04/26 10:36:00 / 추천 0
늦었지만 답변 감사합니다.