현재 위치: > 최신 기사 목록> 브라우저에서 브라우저에서 직접 열리는 대신 파일을 PHP의 헤더 () 함수를 통해 파일을 다운로드하도록 강제하는 방법은 무엇입니까?

브라우저에서 브라우저에서 직접 열리는 대신 파일을 PHP의 헤더 () 함수를 통해 파일을 다운로드하도록 강제하는 방법은 무엇입니까?

M66 2025-05-18

웹 개발에서는 때때로 사용자가 파일을 브라우저에서 보는 대신 파일을 다운로드 할 수 있기를 원합니다. 현재 PHP의 헤더 () 함수를 사용 하여이 요구 사항을 달성 할 수 있습니다. 헤더 () 함수를 사용하면 RAW HTTP 헤더 정보를 보내고 브라우저의 동작을 제어 할 수 있습니다.

이 기사에서는 브라우저가 직접 열리지 않고 헤더 () 함수를 통해 파일을 다운로드하도록 강제하는 방법을 보여줍니다.

1 단계 : 파일을 준비하십시오

먼저 파일이 준비되었는지 확인하고 경로를 알고 있어야합니다. 예를 들어, path /path/to /your/file.txt가있는 서버의 디렉토리에 파일이 있다고 가정 해 봅시다. 사용자가 파일을 브라우저에서 직접 보는 대신 파일을 다운로드하기를 원합니다.

2 단계 : 헤더 () 함수를 사용하여 올바른 헤더를 설정합니다.

브라우저가 파일을 다운로드하도록 강제하려면 올바른 HTTP 헤더를 설정해야합니다. PHP의 헤더 () 함수는 다양한 HTTP 헤더 정보를 보낼 수 있으며 특정 단계는 다음과 같습니다.

 <?php
// 파일 경로를 설정하십시오
$file = '/path/to/your/file.txt';

// 파일이 있는지 확인하십시오
if (file_exists($file)) {
    // 올바른 것을 설정하십시오 MIME 유형
    header('Content-Type: application/octet-stream');
    
    // 다운로드 된 파일 이름을 지정하십시오
    header('Content-Disposition: attachment; filename="' . basename($file) . '"');
    
    // 파일 크기를 설정하십시오
    header('Content-Length: ' . filesize($file));
    
    // 출력 버퍼를 지우십시오
    ob_clean();
    flush();
    
    // 브라우저에 파일 컨텐츠를 출력합니다
    readfile($file);
    exit;
} else {
    // 파일이 존재하지 않는 경우,프롬프트 오류
    echo '파일을 찾을 수 없습니다!';
}
?>

코드 설명 :

  • 헤더 ( 'Content-Type : Application/Octet-stream')
    이 코드 라인은 브라우저에 파일이 바이너리 스트림이고 브라우저는 직접 표시하는 대신 파일로 처리해야한다고 알려줍니다.

  • 헤더 ( 'content-disposition : 첨부 파일; filename = "file.txt"')
    여기서 파일 다운로드 메소드는 첨부 파일 ( 첨부 파일 )으로 설정되고 다운로드 파일 이름은 file.txt 로 지정됩니다. 필요에 따라 파일 이름을 수정할 수 있습니다.

  • 헤더 ( 'Content-Length :'. Filesize ($ 파일))
    이 코드 라인은 파일의 크기를 설정하여 브라우저가 파일의 크기를 이해하고 다운로드 진행 상황의 표시를 용이하게합니다.

  • ob_clean ()flush ()
    이러한 기능은 파일 컨텐츠가 브라우저로 올바르게 전송되도록 PHP의 출력 버퍼를 지우는 데 사용됩니다.

  • readfile ($ 파일)
    이 함수는 파일 내용을 브라우저에 출력하여 파일 다운로드를 트리거합니다.

  • 출구
    PHP 스크립트의 실행을 종료하려면 exit ()을 호출하여 파일 다운로드 프로세스 중에 다른 불필요한 출력이 없도록합니다.

3 단계 : 테스트

이제 브라우저에서 PHP 스크립트에 액세스 할 수 있습니다. 스크립트 파일 이름이 download.php 라고 가정하면 http://m66.net/download.php를 방문하면됩니다 (URL을 실제 파일 경로로 바꾸는 것). 모든 것이 올바르게 구성되면 브라우저에서 파일을 브라우저에서 직접 열지 않고 다운로드하라는 메시지가 표시됩니다.

자주 묻는 질문

  1. 파일을 다운로드 할 수 없습니다 <br> 파일이 다운로드되지 않은 경우 파일 경로가 올바른지 확인하고 PHP 스크립트에 파일에 액세스하기에 충분한 권한이 있는지 확인하십시오.

  2. 다운로드 후 파일이 비어 있습니다 <br> 파일 내용이 손상되지 않았으며 출력 버퍼가 잘못 정리되지 않도록하십시오. OB_CLEAN ()FLUSH ()를 댓글을 달아서 작동하는지 확인할 수 있습니다.

  3. 파일 다운로드를위한 Mime Type 문제 <br> 파일 유형이 특별한 경우 (예 : PDF, Zip 등) 파일 유형에 따라 다른 MIME 유형을 설정할 수 있습니다. 예를 들어:

     header('Content-Type: application/pdf'); // ~을 위한 PDF 문서
    header('Content-Type: application/zip'); // ~을 위한 ZIP 문서
    

이러한 방식으로 PHP의 Header () 함수는 파일의 다운로드 동작을 제어하여 사용자가 브라우저에서 직접 보지 않고 예상대로 파일을 다운로드 할 수 있도록 도와줍니다.