현재 위치: > 최신 기사 목록> 브라우저가 헤더를 통해 파일을 열지 않고 다운로드하도록 강제하는 방법 ()

브라우저가 헤더를 통해 파일을 열지 않고 다운로드하도록 강제하는 방법 ()

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 () 함수는 파일의 다운로드 동작을 제어하여 사용자가 브라우저에서 직접 보지 않고 예상대로 파일을 다운로드 할 수 있도록 도와줍니다.