현재 위치: > 최신 기사 목록> fpassthru 함수를 통해 압축 파일을 브라우저로 전송하기위한 실질적인 방법과 예방 조치는 무엇입니까?

fpassthru 함수를 통해 압축 파일을 브라우저로 전송하기위한 실질적인 방법과 예방 조치는 무엇입니까?

gitbox 2025-09-12

<?php // 기사가 시작됩니다 에코 "

fpassthru 함수를 통해 압축 파일을 브라우저로 전송하기위한 실질적인 방법과 예방 조치는 무엇입니까?

"
; 에코 "

PHP 개발에서는 사용자가 다운로드 할 수 있도록 서버 (예 : Zip, GZ 등)에서 압축 파일을 브라우저로 직접 보내는 것이 종종 필요합니다. 기능은 효율적인 선택입니다. 파일 포인터에서 파일 컨텐츠를 읽고 전체 파일을 메모리에로드하지 않고 브라우저에 직접 출력 할 수 있습니다.이 기사는 실제 방법과 예측을 소개합니다.

" 에코 "

1. fpassthru의 기본 사용

"
; 에코

"fpassthru의 기본 구문은 다음과 같습니다.

"
; 에코 "
int fpassthru (자원 \ $ 핸들)
"
;
에코 "

파일의 끝이 끝날 때까지 \ $ 핸들 로 가리키는 파일을 읽고 브라우저에 데이터를 직접 출력하여 바이트 출력 수를 반환합니다.

"
; 에코 "

2. 압축 파일을 브라우저로 보내는 단계

"
; 에코 "
    "
;; 에코 "
  • 올바른 HTTP 헤더 설정 : 브라우저가 파일 다운로드 요청임을 알고 있는지 확인하십시오.
  • "
    ; 에코 "
  • 파일 열기 : fopen을 사용하여 보내야 할 압축 파일을 엽니 다.
  • "
    ; 에코 "
  • Fpassthru를 사용하여 파일 컨텐츠를 출력 : 파일 컨텐츠를 브라우저로 직접 전송하십시오.
  • "
    ; 에코 "
  • 파일 포인터를 닫습니다 : 리소스를 자유롭게하십시오.
  • "
    ; 에코 "" ;; 에코 "

    샘플 코드 :

    "
    ; 에코 "
    \ $ file = &#39;example.zip&#39;;
    if (file_exists (\ $ file)) {
        헤더 ( &#39;내용 설명 : 파일 전송&#39;);
        헤더 ( &#39;내용 유형 : 응용 프로그램/zip&#39;);
        헤더 ( &#39;content-disposition : 첨부 파일; filename = \ "&#39;. basename (\ $ file). &#39;\"&#39;);
        헤더 ( &#39;Content-Transfer-Encoding : Binary&#39;);
        헤더 ( &#39;content-length :&#39;. filesize (\ $ file));
    
        \ $ fp = fopen (\ $ file, &#39;rb&#39;);
        if (\ $ fp) {
            fpassthru (\ $ fp);
            fclose (\ $ fp);
            출구;
        }
    }
    
    "
    ;
    에코 "

    3, 실용적인 방법

    "
    ; 에코 "
      "
    ;; 에코 "
  • 큰 파일을 한 번에 메모리에로드하지 않도록 ReadFile 또는 Fpassthru를 사용하십시오.
  • "
    ; 에코 "
  • 올바른 파일 전송을 보장하기 위해 출력 버퍼를 청소하기 위해 OB_CLEAN ()FLUSH () 와 결합하여 올바른 파일 전송을 보장합니다.
  • "
    ; 에코 "
  • 다운로드 경험을 향상시키기 위해 콘텐츠 길이를 통해 브라우저 파일 크기를 미리 알리십시오.
  • "
    ; 에코 "
  • 대형 파일을 청크에서 읽고 출력 할 수 있고 시간 초과를 방지하기 위해 set_time_limit (0)를 사용할 수 있습니다.
  • "
    ; 에코 "" ;; 에코 "

    iv. 주목할만한 것들

    "
    ; 에코 "
      "
    ;; 에코 "
  • 파일을 보내기 전에 공백과 HTML을 포함하여 출력이 없는지 확인하십시오. 그렇지 않으면 HTTP 헤더가 고장됩니다.
  • "
    ; 에코 "
  • zip application/zip 과 같은 MIME 유형을 올바르게 설정하고 GZ는 Application/GZIP를 사용합니다.
  • "
    ; 에코 "
  • 서버 권한은 PHP가 대상 파일을 읽도록 허용해야합니다.
  • "
    ; 에코 "
  • 큰 파일을 다운로드 할 때 대역폭 제한 및 시간 초과 설정을 고려하십시오.
  • "
    ; 에코 "" ;; 에코 "

    5, 요약

    "
    ; 에코 "

    Fpassthru를 사용하면 서버에서 압축 파일을 브라우저로 효율적으로 보낼 수 있습니다. 사용하는 동안 HTTP 헤더 설정, 출력 버퍼 처리 및 파일 권한과 같은 문제에주의를 기울여야합니다. 이러한 기술을 마스터하면 파일 다운로드 기능을보다 안정적이고 효율적으로 만들 수 있습니다.

    " // 기사의 끝 ?>