헤더를 통해 다운로드를 실행하는 PHP에 대한 PHP 도움말 문서의 지침은 상대적으로 간단하며 인터넷에는 이 측면에 대한 기사가 거의 없으며 원하는 효과를 얻을 수 없는 기사도 많습니다. 오늘은 이 주제에 대해서도 이야기하겠습니다. 인터넷의 일부 기사에 비해 개선되었다고 느끼면 매우 만족할 것입니다.
정확한 관점에서 볼 때, PHP 문서는 텍스트 파일 다운로드를 트리거하는 데 필요한 세 가지 명령문을 간결하게 나열하므로 가장 정확합니다. PDF를 예로 들면
다음과 같습니다.
// PDF 헤더를 출력합니다
('Content-type: application/pdf');
// download.pdf라고 합니다.
header('Content-Disposition: attachment; filename="downloaded.pdf"');
// PDF 소스는 원본.pdf에 있습니다.
readfile('original.pdf');
이 세 문장은 맞지만, 실제 사용 중에 예상치 못한 문제가 쉽게 발생할 수 있으므로 주의를 기울이는 사람이라면 이러한 문제를 쉽게 피할 수 있습니다. 그러나 나는 그렇지 않기 때문에 그러한 문제에 직면했습니다. 여기서는 내 문제에 대해 간략하게 이야기하겠습니다.
첫 번째 문장은 할 말이 없어야 합니다. 예를 들어 txt 파일을 다운로드하는 경우 header('Content-type: application/txt')로 변경하면 됩니다. );. 두 번째 문장은 말할 것도 없습니다. 다운로드한 문서에 이름을 지정하면 됩니다. txt 파일인 경우 header('Content-Disposition: attachment; filename="downloaded.txt"')로 변경하면 됩니다. ;, 세 번째 문장 질문이 더 있습니다. readfile 함수는 파일을 읽어서 출력한다는 의미입니다. 여기서 파일의 경로는 다운로드 폴더 아래에 있는 원본.txt 파일이어야 합니다. readfile('downloads/original.txt');을 작성할 수 있으며, 제출된 페이지가 텍스트 및 기타 문자를 출력하는 경우 다운로드된 파일은 원본 파일(original.txt)과 제출된 페이지의 텍스트 출력이 혼합된 파일이 됩니다. 여기서 주의 깊은 관찰이 부족했습니다. 뭔가 잘못된 것을 보자마자 즉시 코드를 확인했지만 위의 텍스트가 나에게 필요한 내용이라는 것을 발견하지 못했습니다. 이 문제는 제출된 페이지의 텍스트 콘텐츠 출력을 끄는 것입니다. 이 시점에서 문제는 해결되었으며, 텍스트 파일 링크를 클릭하면 다운로드 대화 상자가 실행됩니다.