| 제목 | zip파일로 압축 과정에서의 오류 문의. | ||
|---|---|---|---|
| 카테고리 | PHP | ||
| 글쓴이 | madman | 작성시각 | 2016/12/09 16:08:44 |
|
|
|||
|
아래의 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
|
|
madman
/
2017/04/26 10:36:00 /
추천
0
늦었지만 답변 감사합니다.
|
첫번째에서 http://주소 형태로 해서 안되는걸 겁니다. 두번째처럼 /home/위치/파일명 형태로 해보세요.
다른 서버에 있는 것은 fopen이나 file_get_contents 같은 함수로 열어서 처리해야 합니다.
게시판 이동합니다.