메뉴 건너뛰기

프로그램언어

조회 수 28332 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

DB상의 많은 파일을 한꺼번에 다운받기


<? 
/*************************************************************** 
프로그램명 : filedownload_zip.php 
설명 : 파일 여러개 zip 파일로 묶어서 받기 
작성일자 : 2005-10-06 오후 1:58 
작성자 : 윤영식 
***************************************************************/ 

// 에러 메시지 뿌리고 history.back() 
function error($msg) { 
echo "<script language="javascript">rn"; 
echo " alert("".$msg."");rn"; 
echo " history.back();rn"; 
echo "</script>"; 
exit(); 
} 

// 디렉토리 통째로 삭제하기.... 
function rm($fileglob) { 
if (is_string($fileglob)) { 
if (is_file($fileglob)) { 
return unlink($fileglob); 
} else if (is_dir($fileglob)) { 
$ok = rm("$fileglob/*"); 
if (! $ok) { 
return false; 
} 
return rmdir($fileglob); 
} else { 
$matching = glob($fileglob); 
if ($matching === false) { 
trigger_error(sprintf('No files match supplied glob %s', $fileglob), E_USER_WARNING); 
return false; 
} 
$rcs = array_map('rm', $matching); 
if (in_array(false, $rcs)) { 
return false; 
} 
} 
} else if (is_array($fileglob)) { 
$rcs = array_map('rm', $fileglob); 
if (in_array(false, $rcs)) { 
return false; 
} 
} else { 
trigger_error('Param #1 must be filename or glob pattern, or array of filenames or glob patterns', E_USER_ERROR); 
return false; 
} 
return true; 
} 

// 업로드 파일 디렉토리 
$up_path = "../upload"; 
$zip_dir = "../upload/tmp_zip"; 

// tmp 디렉토리 만들기 위해서 file_dir 만들기 
$tmp = microtime(); 
$tmp2 = explode(" ",$tmp); 
$file_dir = $tmp2[1].sprintf("%03d",(int)($tmp2[0]*1000)); 
$tmp=null; 
$tmp2=null; 

// tmp 디렉토리 
$tmp_dir = $zip_dir."/".$file_dir; 

// tmp 디렉토리 생성 
if(!mkdir ($tmp_dir, 0700)) { 
error("파일 생성시 에러가 발생했습니다."); 
exit; 
} 

$sql = "SELECT id, filename FROM table"; 
$result = mysql_query($sql); 
$i=0; 
while($row = mysql_fetch_assoc($result)) { 
$org_name = "/".$row[file_name]; 
$new_name = "/".$id."_".$row[file_name]; 

// tmp 디렉토리로 COPY 
@copy($up_path.$org_name,$tmp_dir.$new_name); 
$i++; 
} 
mysql_free_result($result); 
mysql_close(); 

if (!$i) { 
rm($tmp_dir); 
error("선택된 파일이 없습니다."); 
exit; 
} 

// zip 으로 묶기 
// zip 경로는 서버에서 which zip 을 통해서 알아낸다. 
@exec("/usr/bin/zip ".$tmp_dir."/".$file_dir.".zip ".$tmp_dir."/*"); 

// 다운로드 받기 
if( $fp = @fopen( $tmp_dir."/".$file_dir.".zip","r")) { 
Header("Content-type: file/unknown"); 
Header("Content-Disposition: attachment; filename=".$file_dir.".zip"); 
Header("Content-Description: PHP3 Generated Data"); 

while ($data=fread($fp, filesize( $tmp_dir."/".$file_dir.".zip"))){ 
print($data); 
} 
} else { 
error("서버에 자료파일이 없습니다."); 
} 

// 임시로 만들어진 모든 데이터 지우기, 단, 사용자가 취소를 누르면 서버상에 임시데이터가 지워지지 않으니 cron 을 통해 하루에 한번씩 지워주면 된다. 
rm($tmp_dir); 
exit; 
?> 


List of Articles
번호 제목 날짜 조회 수
320 CodeIgniter에서 PHPExcel 사용하기 file 2017.03.06 20289
319 csv파일 다루기. fputcsv(), fgetcsv() 2021.03.26 558
318 cUrl를 이용한 json 데이타 주고 받기 2020.09.28 1253
317 curl을 이용하여 post, get 방식 으로 데이터 전송하기 2023.01.12 333
316 current() next() key() 그외 배열관련 함수 2021.03.26 253
315 date() 함수의 출력 형식 2021.03.26 241
314 DAUM 지도 API 좌표→주소(주소->좌표) 변환 2020.10.05 431
313 DB 내용을 화면에 출력(이중 for 문) 2015.04.14 21246
312 DB 연동 4단 셀렉트 박스 2018.09.28 6085
» DB상의 많은 파일을 한꺼번에 다운받기 2014.02.27 28332
310 dddotag - 허용하지 않는 태그 걸러내기 2019.01.16 1850
309 Drag/Drop HTML elements 2014.03.26 19535
308 ereg(), eregi(), ereg_replace(), eregi_replace(), split() 대체 2023.01.12 227
307 explode - 문자열 나눔 2016.12.23 19943
306 fcm 푸시 알림 php 테스트 2018.07.19 6044
305 fileatime 파일에 최종적으로 접근한 시간을 반환 2016.12.23 18117
304 fopen 파일 열기 2015.04.14 20297
303 FPDF - PHP로 PDF 만들기 2014.02.27 21075
302 gcm 푸시 알림 php 테스트 2018.07.19 5582
301 gd_info 사용 가능한 GD 라이브러리에 대한 정보를 배열로 반환 2016.12.23 17989
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 17 Next
/ 17

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved