파일 다운로드 예제입니다.

<?php 
 $filename = 'test.php'; 

 header("Cache-control: private"); 
 header("Content-type: ".user_mime_content_type($filename)); 
 header("Content-Disposition: attachment; filename=".$filename); 
 header("Content-Length: ".filesize($filename)); 
 header("Cache-Control: cache, must-revalidate"); 
 header("Content-Description: PHP3 Generated Data"); 
 header("Pragma: no-cache"); 
 header("Expires: 0"); 

 if(filetype('test.php') === 'file'){ 
      $fp = fopen("test.php", "rb"); // 오픈하기 
      while(!feof($fp)) {  
         print fread($fp, 1024); // 한줄씩 읽어 옵니다. 
         flush(); 
      } 
      fclose ($fp); // 닫기 
 } else { 
    header_remove(); // 파일이 아니면 전송 헤더목록을 삭제합니다. 
 } 
 clearstatcache(); 
?>

다음은 다운로드 함수 예제입니다. 다운로드받을 때는 파일이 위치하는 경로를 적어 주세요.

<?php force_download("filename"); ?>

<?php
function force_download($filename) {
 $data = @file_get_contents($filename);

 if($data) {
  $basename = basename($filename);

  $expires = gmdate("D, d M Y H:i:s", mktime(
    date("H")+2, date("i"), date("s"), date("m"), date("d"), date("Y")
  ));

  header("Content-Type: application-x/force-download");
  header("Content-Disposition: attachment; filename=$basename");
  header("Content-length: " . strlen($data));
  header("Expires: " . $expires . " GMT");
  header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");

  if(false === strpos($_SERVER["HTTP_USER_AGENT"], 'MSIE ')) {
    header("Cache-Control: no-cache, must-revalidate");
  }
  header("Pragma: no-cache");

  flush();
  ob_start();

  echo $data;
 } else {
  die($filename . " 파일 열기에 실패하였습니다.");
 }
}
?>

0 댓글