파일 다운로드는 웹 응용 프로그램의 일반적인 요구 사항 중 하나입니다. PHP의 Header () 함수를 통해 파일을 브라우저로 푸시하고 사용자의 파일 다운로드 작업을 트리거 할 수 있습니다. 이 기사는 PHP의 Header () 함수를 통해 파일 다운로드 기능을 구현하는 방법을 자세하게 소개하고 프론트 엔드가 요청을 트리거하는 방법과 백엔드가 헤더 () 함수를 사용하여 파일을 브라우저로 푸시하는 방법을 설명합니다.
프론트 엔드에서는 HTML 또는 JavaScript를 사용하여 파일 다운로드 요청을 트리거 할 수 있습니다. 가장 쉬운 방법은 링크를 클릭하여 다운로드를 트리거하는 것입니다. 일반적으로 A 태그를 사용하여 링크를 정의하고 HREF를 사용하여 파일의 URL을 지정합니다.
<a href="http://m66.net/download.php?file=example.txt" download>파일을 다운로드하려면 클릭하십시오</a>
이 예에서 사용자가 링크를 클릭 한 후 브라우저는 다운로드 파일을 요청하고 get request를 통해 파일 매개 변수 (예 : file = example.txt )를 백엔드 PHP 스크립트로 전달합니다.
또한 JavaScript를 통해 파일 다운로드를 동적으로 트리거 할 수도 있습니다.
function downloadFile() {
const xhr = new XMLHttpRequest();
xhr.open("GET", "http://m66.net/download.php?file=example.txt", true);
xhr.responseType = "blob"; // 반환 된 데이터가 이진 파일임을 나타냅니다
xhr.onload = function() {
const blob = xhr.response;
const link = document.createElement('a');
link.href = URL.createObjectURL(blob);
link.download = 'example.txt'; // 다운로드 된 파일 이름을 설정하십시오
link.click(); // 트리거 클릭,파일을 다운로드하십시오
};
xhr.send();
}
이 JavaScript는 Ajax를 통해 파일을 요청하고 Blob Object를 사용하여 파일 다운로드 링크를 작성 한 다음 자동으로 다운로드를 트리거합니다.
PHP에서 헤더 () 함수는 원시 HTTP 헤더 정보를 보내는 데 사용됩니다. Header () 함수를 통해 브라우저에 파일을 다운로드하도록 지시 할 수 있습니다. 특정 작업은 다음과 같습니다.
먼저 파일의 존재를 확인했는지 확인하십시오.
적절한 컨텐츠 유형 및 컨텐츠 방지 헤더를 설정하여 브라우저에 파일을 처리하는 방법을 알려줍니다.
readfile () 또는 기타 메소드를 사용하여 파일 컨텐츠를 브라우저에 출력하십시오.
<?php
// download.php
// 파일 이름 매개 변수를 얻습니다
$file = isset($_GET['file']) ? $_GET['file'] : '';
$filePath = '/path/to/files/' . $file; // 파일의 절대 경로를 설정하십시오
// 파일이 있는지 확인하십시오
if (file_exists($filePath)) {
// 응답 헤더를 설정하십시오,告知浏览器파일을 다운로드하십시오
header('Content-Type: application/octet-stream'); // 모든 파일 유형에 적용 가능합니다
header('Content-Disposition: attachment; filename="' . basename($filePath) . '"'); // 파일 이름을 다운로드하고 지정하십시오
header('Content-Length: ' . filesize($filePath)); // 파일 크기
header('Cache-Control: no-cache, no-store, must-revalidate'); // 캐시를 비활성화합니다
header('Pragma: no-cache');
header('Expires: 0');
// 출력 파일 컨텐츠
readfile($filePath);
exit;
} else {
echo '파일이 존재하지 않거나 경로가 잘못되었습니다!';
}
?>
이 PHP 예제에서는 먼저 URL ( 예 : txt )에 전달 된 파일 매개 변수를 가져온 다음 파일 경로별로 파일을 찾습니다. 파일이 존재하는 경우 Header () 을 통해 파일 다운로드 유형 및 기타 정보를 설정 한 다음 readfile ()을 사용하여 파일 내용을 출력하고 파일의 다운로드를 실현합니다.
헤더 ( 'Content-Type : Application/Octet-stream') : 파일 유형을 이진 스트림으로 설정합니다. 모든 유형의 파일의 경우 Application/Octet-stream을 일반 MIME 유형으로 사용하십시오.
HEADER ( 'Content-Disposition : ATHIPMENT; FILENAME = "FILENAME"') : 응답을 수신 할 때 파일을 첨부 파일로 다운로드하려면 브라우저를 설정하고 파일 이름을 파일에 할당합니다. 파일 이름은 Basename () 을 통해 얻을 수 있습니다.
헤더 ( 'Content-Length :'. Filesize ($ FilePath)) : 파일 크기를 설정합니다. 이는 큰 파일에 특히 중요하며 브라우저는이 정보를 기반으로 다운로드 진행 상황을 추정 할 수 있습니다.
readfile ($ filepath) :이 함수는 파일을 읽고 브라우저로 직접 출력합니다.
출구; : 파일 컨텐츠를 출력 한 후에 는 종료를 통화하십시오. 불필요한 출력 또는 응답을 피하기 위해 스크립트 실행을 종료합니다.
PHP의 헤더 () 함수를 사용하고 적절한 HTTP 헤더 설정과 결합하여 파일 다운로드 기능을 구현할 수 있습니다. 프론트 엔드에서 사용자는 링크를 클릭하거나 AJAX 요청을 트리거하여 파일을 요청합니다. 백엔드에서 PHP는 Header () 함수를 통해 올바른 응답 헤더를 설정 한 다음 파일 컨텐츠를 브라우저로 푸시합니다. 이러한 방식으로 웹 응용 프로그램에 파일 다운로드 기능을 쉽게 추가 할 수 있습니다.