HTTP 헤더 문자열 매개 변수는 캐시 제어: 아니요 캐시 또는 캐시 제어로 설정 됩니다. 이는 파일에 대 한 대부분의 정보가 캐시 되므로 캐시를 제어 하는 것이 중요 하기 때문입니다. 여기를 클릭 하 여이 자습서에서 코드의 작업 복사본을 다운로드할 수 있습니다. BTW 나는 정확히 내가 필요로 하 고 훌륭한 작품 이었다이 게시물을 발견! PHP에서 콘텐츠 형식 참조를 http://stackoverflow.com/questions/157318/resumable-downloads-when-using-php-to-send-the-file/4451376#4451376는 것이 중요 합니다 — 보호 하 고 있는 파일의 MIME 유형입니다. 예를 들어 MP3 파일을 대신 저장 한 경우 응용 프로그램/p d f를 오디오/mpeg로 대체 해야 합니다. 둘째, MIME 형식에 대해서는 종종 콘텐츠 형식: 응용 프로그램/강제 다운로드와 같은 것을 보게 됩니다. 이러한 것과 콘텐츠 유형은 없습니다: 응용 프로그램/8 진수 스트림 (RFC1521는 exe/dll의 경우 어쩌면 응용 프로그램/x msdownload) 처럼 잘 작동 합니다. 당신이 인터넷 익스플로러에 대해 생각 하 고 있다면, 그것은 내용을 “스니핑” 강제로 보다 명확 하 게 지정 하는 것이 더 낫다. 자세한 내용은 인터넷 익스플로러에서 MIME 유형 감지를 참조 하십시오. readfile ()은 파일 파일을 출력 하는 간단한 방법입니다. 역사적으로 그것은 몇 가지 성능 문제를가지고 있었고, 문서가 주장 하는 동안 메모리 문제가 없는, 실제 시나리오는 다른 출력 버퍼링 및 기타 미묘한 것 들을 구걸. 에 관계 없이, 바이트 범위를 지원 해야 하는 경우, 당신은 여전히 구식 방법을 출력 해야.

다음은 전체 다운로드 스크립트 내의 함수입니다. 다운로드는 일반 권한으로 작동 합니다. 감사! 참고: 작성자는 파일 다운로드와 관련 된 보안 위협 처리를 해결 하지 않습니다. 이 코드는 추가 보안 강화 없이 실제 사용을 위한 것이 아닙니다. 자세한 내용은 아래의 의견을 읽어 보시기 바랍니다. 또한 추가 위생 및 보안 코드를 위해이 파일을 다운로드 하십시오. 암호로 보호 된 디렉토리 또는 웹 사이트 루트 디렉토리 위의 디렉토리에 저항 하는 각 파일에 대 한 웹 페이지 링크를 만듭니다. 이 예제에서는 다음 다운로드 URL을 사용 합니다. 나는 단지 htaccess를 통해 5 분 전에 해결 했습니다. 나는 폴더에 대 한 액세스를 거부 합니다. 내 파일의 경로는 데이터베이스 테이블에 저장 되므로 GET 메서드를 통해서만 ID를 전달 합니다. “Noob” 사용자는 파일의 명확한 URL을 볼 수 없습니다.

안녕, 나는 내 파일을 보호 하기 위해 다운로드 .php 파일을 작성 하는 코드를 사용 했습니다! $ _SESSION 사용자. 나는 chmod 값으로 700를 사용 하는 경우, 페이지는 다운로드 파일을 반환 하지 않습니다, url 액세스에서 또한 내 폴더를 보호 하 고 싶습니다, 그러나 그것은 빈 상태로 유지 됩니다 (fopen 실패). 코드에서 액세스 파일에 어떤 값을 사용 해야 합니까? 서버에서 다운로드를 허용 하려면 효과적으로 통신할 수 있는 스크립트를 작성 해야 합니다. 다운로드를 위해 텍스트 파일을 제공 하려는 경우 (아마도 제품 피드 등) 다음이 작은 조각을 좋아할 수 있습니다. 파일이 호스팅되는 웹 서버, 다운로드할 파일 및 해당 파일의 MIME 유형을 PHP가 필요 합니다. 이것은 내가 제일 좋아하는 PHP 다운로드 스크립트입니다. 클라이언트가 사이트 방문자가 암호로 보호 된 디렉토리에서 큰 파일을 다운로드 할 수 있기를 원하는 때까지 다른 더 간단한 방법을 사용 했습니다. PHP 스크립트는 모든 종류의 파일에 대 한 아파치 웹 서버에서 작동. 나는 500MB 보다 큰 파일 다운로드에이 스크립트를 사용 했습니다. 캐시 제어 헤더는 웹 브라우저 내에서 기본적으로 열리는 경우에도 텍스트 파일 및 기타 파일에 대 한 다운로드를 강제 하는 데 사용 됩니다. 아파치에서 IIRC mod_sendfile, x-accel-리디렉션 nginx 예, 그것은 더 나은 솔루션 중 하나, 그러나 그것은 여전히 몇 가지 오류가 있습니다. 범위가 허용 되지 않는 경우 가짜 오류를 보내고 전체 파일 크기를 범위의 길이가 아닌 콘텐츠 길이로 보냅니다.