PHP 파일 다운로드

파일 이름 주위에 따옴표를 추가 하기만 하면 Safari에서 결과 다운로드의 이름을 올바르게 지정 합니다. 그것은 편리 하 게 많은 시간을 복사 하 고 파일에 브라우저 창에서 데이터를 붙여 넣은 다음 저장을 충분히 알지 못하는 최종 사용자에 게 CSV 파일을 밀어 사용 했습니다. 안녕, 좋은이 방법으로 작동:) DB 레코드 Id에 대 한이 문서를 확인 하십시오. https://www.finalwebsites.com/creating-secure-php-websites/(모든 주석의 대부분) Armand, 나는 100%에 동의 하지만 때로는 총 아래에 당신이 해야 할 일을 할 필요가 작업 코드가 필요 합니다. Php 헤더를 사용 하 여 파일 전달 방법은 너무 새로운, 결코 완료 하 고 난 최대한 빨리 솔루션을 필요로 하고있다. 이 방법은 현재와 나는이의 더 나은 기능 버전을 개발 하기 위해 비행기에 대 한 작동 합니다. 다른 한 걸음 더 나아가이 같은 일을 했다: 그래서, 당신은 범위가 여러 범위를 포함 하지 않는 것을 확인 해야 하 고, 범위 자체가 유효 하다 (끝은 더 큰 시작 시작은 음수가 아니며 end는 파일 자체 보다 크지 않습니다. ` 바이트:-`가 유효한 요청이 아닙니다. 범위가 유효 하지 않은 경우에는 출력 해야 합니다. 파일에 대 한 액세스를 제한 해야 하는 경우에는 암호화 된 일회성 Id를 생성 해야 하므로 생성 된 경로를 한 번만 사용할 수 있습니다. 항상 해야 할 일 – 입력을 소독 합니다. 다음과 같이 파일 이름만 허용 합니다.

이것은 매우 광범위 한 문제 이며 불행 하 게도 PHP 매뉴얼은 오류로 시달려 있습니다. 개발자는 일반적으로 « 이것은 나를 위해 작동 » 라고 그들은 완전히 이해 하지 못하는 물건을 복사 합니다. 나는 정확한 정보만을 제공 하기 위해 최선을 다하고 있습니다. 일반적인 PHP 오류를 피하는 방법에 대 한 기사 자체 오류를 포함 하는 경우 그것은 정말 슬픈 것. 에 관계 없이, 내 포인트 스탠드: PHP는 작동 하는 것으로 보인다 코드를 함께 해킹 쉽게, 하지만 개발자는 읽고 공식 사양을 준수 해야 합니다. 경고: 헤더 정보를 수정할 수 없습니다-이미 보낸 헤더 (출력은 다음과 같이 표시 될 수 있습니다. 라인 374 범위에 대 한 Wampwwwbackupsec_monicted.php는 첫 번째 100의 ` 바이트 =-99 ` 또는 ` 바이트 = 0-99`과 같이 표현 됩니다. 바이트는 첫 번째 100 바이트를 건너뛰려면 ` 바이트 = 100 `이 고 중간에 있는 항목의 경우 ` 바이트 = 8392 `입니다.

여러 범위를 지정할 수 있습니다 (예: ` 200400 `) 하지만 처리 하 고 특히 해당 범위를 제공 하는 것은 더 복잡 하므로 아무도 귀찮게 하지 않습니다. 당신이 아파치에 있다면, 다운로드를 간단 하 고 빠르게 만드는 mod_xsendfile 라는 매우 멋진 모듈이 있다. 헤더를 출력 하기만 하면 모듈이 나머지를 처리 합니다. 물론 설치할 수 있어야 하 고 코드를 덜 이식 가능 하 게 하므로 재배포 가능 코드에이를 사용 하지 않을 수 있습니다. 엄격한 브라우저 테스트 및 코드 조정 후, 여기에 내가 끝났다 스크립트입니다. 불필요 한 물건을 모두 제거 하 고 가능한 한 많이 단순화 되었습니다. 당신은 훨씬 적은 자원을 소비 하는 너무 다운로드를 스트리밍 할 수 있습니다. 예: 마찬가지로 word 문서, pdf 파일 등과 같은 다른 파일 형식을 강제로 다운로드 할 수 있습니다.

PHP에서 콘텐츠 형식 참조는 중요 한 — 보호 하는 파일의 MIME 형식입니다. 예를 들어 MP3 파일을 대신 저장 한 경우 응용 프로그램/p d f를 오디오/mpeg로 대체 해야 합니다.