CI 묻고 답하기

제목 codeigniter mp3파일 zip파일로 압축 관련 문의.
글쓴이 madman 작성시각 2016/04/19 17:18:09
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 18992   RSS

안녕하세요. 

php + codeigniter 환경에서 웹서버에 올려진 mp3를 zip파일로 압축해 다운 받도록 하는 부분을 구현하다 문의가 있어 올립니다. 

 

codeigniter 환경이니만큼 MVC 모델이구요. controller에서 웹서버 경로의 음원들을 배열로 지정해 묶은다음 view단에서의 압축버튼을 클릭하면 압축해 로컬로 다운 받을 수 있도록 하는건데요. 

압축은 되는데, 파일 크기가 다르더라구요. 재생도 안 되고. 

파일 하나당 크기도 20kb밖에 안 되는, 초저용량 파일들이 대다수이기 때문에 용량 문제는 아닌거 같고.. 혹시 codeigniter 버전에 따라 압축률에 차이가 있는건지... 

참고로 text파일은 정상적으로 압축되는데, mp3인 경우가 문제네요. 소스는 아래와 같습니다. 

 

//controller 
<? 
 class mp3_test extends CI_Controller { 
    function __construct() { 
        parent::__construct(); 
        
        $this->load->library('zip'); 
    } 
    
    function index() 
    { 
        $data = array(); 
        
        $this->load->view('mp3_download', $data); 
    } 
    
    function add_data() 
    { 
        $data = array("teacher.mp3" => "../웹서버경로음원1.mp3", "student.mp3" => "../웹서버경로음원2.mp3"); 




  $this->zip->add_data($data); 
  $this->zip->download("mp3.zip"); 
    } 
 } 
 ?> 


//view 
 <table class="tablesorter" border="0" cellpadding="0" cellspacing="1"> 
 <thead> 
 <tr> 
  <th style="text-align:center" colspan="2">Zip 라이브러리 테스트</th> 
 </tr> 
 </thead> 
 <form method="post" action="<?=site_url('mp3_test/add_data')?>"> 
 <tr> 
    <td>음원 압축</td> 
    <td><textarea name="mydata" rows="10" class="input-block-level">zip test!!!</textarea> 
 <input type="submit" value="압축하기" /></td> 
 </tr> 
 </form> 
 </table> 

 

 다음글 하위 디렉토리에 codeigniter를 구동하고자 합니... (4)
 이전글 xss_clean 실행 되면 익스플로러가 멈춰 버립니다... (2)

댓글

아이와사 / 2016/04/19 17:40:51 / 추천 0

read_file 메소드 때문 아닐까요?

http://www.ciboard.co.kr/user_guide/kr/libraries/zip.html

변종원(웅파) / 2016/04/20 16:18:14 / 추천 0

아이와사님 말씀처럼 read_file 메소드를 사용해서 압축하세요.

참고하신 예시는 텍스트파일을 압축하는 예제입니다.

madman / 2016/04/22 10:17:28 / 추천 0
네 모두 답변 감사합니다. 그런데 배열로 지정해서 2개 이상의 다중 파일로 압축할 수 있는 방법은 없을까요? read_file 메소드로는 1개만 압축할 수 있어서요.