fpassthru 함수
(PHP 4, PHP 5, PHP 7, PHP 8)
fpassthru — 파일 포인터에 남아 있는 모든 데이터 출력
설명
fpassthru(resource $stream
): int
현재 위치에서 지정된 파일 포인터의 EOF를 읽고 결과를 출력 버퍼에 씁니다.
파일에 이미 데이터를 쓴 경우 rewind()를 호출하여 파일 포인터를 파일의 시작 부분으로 재설정해야 할 수도 있습니다.
파일의 내용을 먼저 수정하거나 특정 오프셋을 찾지 않고 출력 버퍼에 덤프하려는 경우 fopen() 호출을 저장하는 readfile()을 사용할 수 있습니다.
매개변수
stream
- 파일 포인터는 유효해야 하며 fopen() 또는 fsockopen()에 의해 성공적으로 열린 파일(그리고 fclose()에 의해 아직 닫히지 않은 파일)을 가리켜야 합니다.
반환 값
stream
에서 읽고 출력으로 전달된 문자 수를 반환합니다.
Examples
예제 #1 바이너리 파일에 fpassthru() 사용
<?php
// open the file in a binary mode
$name = './img/ok.png';
$fp = fopen($name, 'rb');
// send the right headers
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));
// dump the picture and stop the script
fpassthru($fp);
exit;
?>
노트
메모:
Windows 시스템의 이진 파일에서 fpassthru()를 사용할 때 fopen() 호출에 사용된 모드에 a b를 추가하여 이진 모드에서 파일을 열어야 합니다.
시스템에서 필요하지 않더라도 바이너리 파일을 처리할 때 b 플래그를 사용하는 것이 좋습니다. 그러면 스크립트가 더 이식성 있게 될 것입니다.
기타
- readfile() - 파일을 출력
- fopen() - 파일 또는 URL을 엽니다.
- popen() - 프로세스 파일 포인터를 엽니다.
- fsockopen() - 인터넷 또는 Unix 도메인 소켓 연결 열기