PHP 파일 다운로드

(또, 많은 스크립트는 400 오류 또는 기타 코드를 전송 하 여이 잘못). 그것이 실패 한 것 들 보다 더 위험한 손상 된 다운로드를 초래할 수 있으므로 범위 (들)을 추측 하거나 수정 하려고 하지 마십시오. 이것을 처리 하는 가장 간단한 방법은 „청크“에서 파일을 출력 합니다: 고객의 웹사이트 트래픽의 대량 생성이 일 때문에 클라이언트 … 대용량 파일의 다운로드를 다시 시작할 수 있도록 하는 것이 좋습니다. 이렇게 더 관여 하지만, 정말, 특히 만일 당신이 큰 파일이 나 비디오/오디오 서비스를 할 가치가 있어요. 당신이 아파치에 있는 경우, 다운로드를 간단 하 고 빠르게 만드는 mod_xsendfile 라는 아주 멋진 모듈이 있다. 당신은 단지 헤더를 출력 모듈은 나머지를 돌 봐. 물론, 당신은 그것을 설치할 수 있어야 합니다 그리고 그것은 또한 코드를 덜 이식 그래서 당신은 아마 재배포 가능 코드에 대 한 사용을 원하지 않을 것입니다. 업데이트: 나는 위의 지침을 준수 무료 스크립트를 발표 했다. 경우 데이터 [두 번째 인수입니다] 스트림 리소스를 해당 스트림의 나머지 버퍼를 지정 된 파일에 복사 됩니다.

이것은 stream_copy_to_stream ()를 사용 하는 것과 비슷합니다. 당신은 여전히 이상한 결과를 얻을 경우 (특히 IE)에서 다운로드, php 출력 압축이 비활성화 되어 있는지 확인 합니다, 뿐만 아니라 서버 압축 (때로는 서버가 실수로 php 스크립트에 의해 생산 되는 출력에 압축을 적용). readfile ()은 파일 파일을 출력 하는 간단한 방법입니다. 출력 버퍼링 및 기타 미묘한 것 들-역사적으로 그것은 몇 가지 성능 문제가 있 었 문서는 메모리 문제가 주장 하는 동안, 실제 시나리오가 다를 구걸. 바이트 범위를 지원 해야 하는 경우에 관계 없이 여전히 구식 방식으로 출력 해야 합니다. readfile ()은 자체적으로 대용량 파일을 보내는 경우에도 메모리 문제를 표시 하지 않습니다. fopen 래퍼가 활성화 된 경우이 함수를 사용 하 여 URL을 파일 이름으로 사용할 수 있습니다. 특별 한 주: 목적지 폴더를 위한 허가 777를 놓는 것을 잊지 말라 대답을 위한 감사 합니다. 모든 xlsx/xls 파일, 얼굴에 다운로드에 그 문제. 하지만 PDF 파일, 이미지 파일, txt 파일이 올바르게 동일한 코드를 다운로드 합니다.