웹 개발 & 정보/PHP

[PHP] 헤더를 이용한 파일 다운로드 구현

Rozera 2017. 10. 19. 13:23
반응형


PHP로 파일 다운로드를 구현하는 소스입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
$filename = "서버의 파일명"
$file = "서버에서 파일 경로" . $filename;
 
/*
 *  ex)   $filename = "image1.png"; 
 *        $file =  $_SERVER['DOCUMENT_ROOT'] . "/images/" .$filename;
 */
 
if (is_file($file)) {
 
    if (preg_match("MSIE"$_SERVER['HTTP_USER_AGENT'])) { 
        header("Content-type: application/octet-stream"); 
        header("Content-Length: ".filesize("$file"));
        header("Content-Disposition: attachment; filename=$filename"); // 다운로드되는 파일명 (실제 파일명과 별개로 지정 가능)
        header("Content-Transfer-Encoding: binary"); 
        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        header("Pragma: public"); 
        header("Expires: 0"); 
    }
    else { 
        header("Content-type: file/unknown"); 
        header("Content-Length: ".filesize("$file")); 
        header("Content-Disposition: attachment; filename=$filename"); // 다운로드되는 파일명 (실제 파일명과 별개로 지정 가능)
        header("Content-Description: PHP3 Generated Data"); 
        header("Pragma: no-cache"); 
        header("Expires: 0"); 
    }
 
    $fp = fopen($file"rb"); 
    fpassthru($fp);
    fclose($fp);
}
else {
    echo "해당 파일이 없습니다.";
}
?>



브라우저에서 파일을 다운 받는 기능 (내 PC로 다운로드 되는 기능) 을 PHP 파일로 구현하는 소스입니다.


GET 으로 파일명을 넘기는 방식이나 ( 예시 : /download.php?filename='파일명' )


기타 다른 방식으로 활용할 수 있습니다.

반응형