제목 | zip 관련해서 문의드립니다. | ||
---|---|---|---|
카테고리 | CIBOARD | ||
글쓴이 | 손씨가문 | 작성시각 | 2019/04/04 14:05:42 |
|
|||
안녕하세요. 문의 드립니다. $this->load->library('zip'); for($j = 0; $j < count($str_vouchers_file)-1; $j++) { $file = $_SERVER['DOCUMENT_ROOT'].$str_vouchers_file_route[$j]; //파일경로 $file_name = $individual->i_name.'_'.replace('/upfiles/voucher/','',$str_vouchers_file[$j]); //파일명 $this->zip->add_data(iconv('utf-8','euc-kr',$file_name), $file); } $characters = '123456789abcdefg'; $charactersLength = strlen($characters); $randomString = ''; for ($i = 0; $i < 16; $i++) { $randomString .= $characters[rand(0, $charactersLength - 1)]; } $this->zip->archive($_SERVER['DOCUMENT_ROOT'].'/upfiles/zipfile/zipfile_'.$randomString.'.zip'); //zip파일 생성 $this->zip->download(iconv('utf-8','euc-kr','알집.zip')); //다운로드
zip 파일안에 for문 갯수에 맞게 생성이 되는데 파일 오류가 납니다. 파일 경로안에는 정상적으로 파일이 들어있고, 경로도 맞는데 zip으로 변환해서 다운로드 하니까 오류 발생하네요. 단순 파일 다운로드시에는 정상적으로 됩니다. 19-1 파일명1.pdf //파일명 /upfiles/voucher/xj5qazruuxvm3nh.pdf //파일 경로 파일
큰문제점을 못찾겠네요...
|
|||
다음글 | 트랜잭션관련 질문입니다. 3.0 (2) | ||
이전글 | 파일 업로드를 2개 이상할때 질문입니다. (7) | ||
변종원(웅파)
/
2019/04/04 14:29:03 /
추천
0
|
엽토군
/
2019/04/05 11:46:54 /
추천
0
add_data() 메소드 관련 매뉴얼 잘 보면 아실 수 있겠지만 여기서 $file 변수에 넣어야 하는 것은 파일명이 아니에요. 그 파일 안의 내용인 바이너리데이터 이지요. 서버에 이미 존재하는 파일을 추가하는 거라면 read_file() 메소드를 써보세요. 그리고 iconv() 반드시 써야 하는 상황인가요? 그것보다는 특수문자 이스케이프를 해주셔야 할겁니다. /, \, " 등등요. 개인적으로 압축파일 만드는 작업은 그냥 ZipArchive 쓰시는걸 추천합니다. 시중에 각종 zip 라이브러리가 있지만 압축파일 만드는 정도의 작업은 그냥 순정 쓰는게 제일 알기 쉽고 안정적인것 같더군요. https://www.php.net/manual/en/ziparchive.open.php $zip = new ZipArchive; $res = $zip->open('test.zip', ZipArchive::CREATE); if ($res === TRUE) { $zip->addFromString('test.txt', 'file content goes here'); $zip->addFile('data.txt', 'entryname.txt'); $zip->close(); echo 'ok'; } else { echo 'failed'; }
|
$_SERVER 변수 말고 php함수로 패스 구하세요.
zip 모듈이 설치되어 있는지도 확인해보시구요