PHP에서 FPassthru 함수는 매우 실용적인 파일 스트리밍 도구이며, 특히 사진, 비디오, 파일 다운로드 등과 같은 클라이언트에 파일 컨텐츠를 직접 출력하는 데 특히 적합합니다. 가장 큰 장점은 전체 파일을 메모리로 읽지 않고도 파일 컨텐츠를 브라우저로 효율적으로 전송하여 리소스를 저장하고 메모리 오버 플로우 문제를 피할 수 있다는 것입니다.
이 기사는 FPassthru 기능을 사용하여 파일 스트리밍을 구현하고 완전한 샘플 코드를 결합하여 신속하게 시작하는 방법을 자세히 소개합니다.
fpassthru 는 PHP 파일 작동의 함수이며, 기능은 파일 끝까지 현재 파일 포인터 위치에서 출력하는 것입니다. 종종 Fopen 과 함께 사용됩니다. 파일을 열면 파일 내용이 브라우저에 직접 출력됩니다.
기능 프로토 타입 :
int fpassthru ( resource $handle )
$ 핸들은 fopen () 에서 반환 한 파일 포인터 리소스입니다.
반환 값은 바이트 출력 수입니다.
파일 다운로드 인터페이스
사진 또는 비디오 스트림의 출력
파일을 클라이언트로 전송 해야하는 모든 시나리오
파일 <br>을 엽니 다 fopen ()을 사용하여 이진 모드에서 파일을 열어 전송 된 파일이 문자 인코딩의 영향을받지 않도록하십시오.
올바른 HTTP 헤더를 보내십시오 <br> 파일 유형 (다운로드 된 파일 인 경우)에 따라 해당 컨텐츠 유형 , 컨텐츠 길이 및 컨텐츠 방향을 보내십시오.
FPRASSTRU를 출력 파일 스트림 <br>로 호출하십시오 파일 컨텐츠를 클라이언트에게 직접 내보내십시오.
파일 리소스를 닫습니다 <br> 자원 누출을 피하기 위해 리소스를 해제하십시오.
<?php
// 파일 경로
$filePath = '/path/to/your/file.zip';
// 파일이 존재하는지 확인하십시오
if (!file_exists($filePath)) {
header("HTTP/1.1 404 Not Found");
exit("File not found.");
}
// 파일을 엽니 다
$fp = fopen($filePath, 'rb');
if (!$fp) {
header("HTTP/1.1 500 Internal Server Error");
exit("Failed to open file.");
}
// 파일 크기를 얻으십시오
$fileSize = filesize($filePath);
// 설정 HTTP 머리,브라우저 파일 유형과 크기를 알려줍니다
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . basename($filePath) . '"');
header('Content-Length: ' . $fileSize);
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Expires: 0');
// 사용 fpassthru 출력 파일 컨텐츠
fpassthru($fp);
// 파일 리소스를 닫습니다
fclose($fp);
exit;
?>
fopen ($ filepath, 'rb') : 이진 읽기 전용 모드에서 파일을 엽니 다.
HTTP 헤더 세트는 브라우저가 파일 유형 및 크기를 인식하도록하고 내용은 다운로드 된 파일의 기본 이름을 지정합니다.
fpassthru ($ fp)는 파일 포인터의 현재 위치에서 파일 끝으로 직접 모든 데이터를 출력합니다.
파일 핸들을 닫고 종료하여 중복 컨텐츠가 출력되지 않도록하십시오.
파일이 크면 Fpassthru는 모든 파일을 메모리에 읽지 않기 때문에 효율적인 전송 방법입니다.
브라우저가 파일을 올바르게 처리하는지 확인하기 전에 전송하기 전에 적절한 HTTP 헤더를 보내야합니다.
파일 경로가 사용자 입력에서 나온 경우 PATH CROUCHING과 같은 보안 위험을 방지하기 위해 보안 검증을 수행하십시오.
브레이크 포인트 연속 전송을 지원하는 다운로드 요구 사항의 경우 추가 HTTP_RANGE 헤더가 필요 하며이 기사는 자세히 설명하지 않습니다.
위의 단계를 통해 PHP의 fpassthru 기능을 사용하여 효율적인 파일 스트리밍을 쉽게 사용할 수 있습니다. 간결한 코드와 우수한 성능을 갖춘 모든 종류의 파일 다운로드 및 스트리밍 미디어 출력 시나리오에 적합합니다.
파일 다운로드 인터페이스 또는 미디어 스트리밍 서비스를 구축 해야하는 경우 Fpassthru를 사용해 볼 수도 있습니다.이를 통해 코드를보다 간결하고 효율적으로 만들 수 있습니다.