PHP

[PHP] 파일 다운로드

dev-mint 2022. 3. 23. 14:41

 

PHP 파일 다운로드

 

php에서 서버에 있는 파일 다운로드 받는 기능을 구현해 보겠습니다.

 

<?php
$dir_path = "/home/www/images/";        // 파일이 위치한 폴더 경로
$file_name = "test.png";                // 파일명
$file_path = $dir_path.$file_name;
$file_size = filesize($file_path);

if (file_exists($file_path)) {
    header("Content-Type:application/octet-stream");
    header("Content-Disposition:attachment;filename={$file_name}");
    header("Content-Transfer-Encoding:binary");
    header("Content-Length:{$file_size}");
    header("Cache-Control:cache,must-revalidate");
    header("Pragma:no-cache");
    header("Expires:0");

    $fp = fopen($file_path, "r");

    while(!feof($fp)) {
        $buf = fread($fp, $file_size);
        $read = strlen($buf);
        print($buf);
        flush();
    }

    fclose($fp);

} else {
    die("파일이 존재하지 않습니다.");
}

 

 

file_exists(string $filename)
- 파일 또는 디렉터리가 있는지 확인합니다. (is_file을 사용해도 괜찮아요)
- $filename = 파일 경로



fopen(
    string $filename,
    string $mode,
    bool $use_include_path = false,
    ?resource $context = null
)
- 다운로드 할 파일을 읽기전용으로 불러옵니다. ($mode="r" 읽기모드)

 

feof(resource $stream)
- 열려있는 파일을 읽을 때 파일 끝까지 다 읽었는지 확인하기 위해 사용합니다.
  파일 포인터가 끝에 있으면 true를 반환합니다.