2012-03-19 2 views
0

기본적으로 사용자는 일부 데이터를 txt 파일로 내보낼 것입니다. 그러면 해당 txt 파일이 자동으로 다운로드됩니다. 다운로드가 정상적으로 작동하며 원하는 데이터가 표시됩니다. 그러나 실제 페이지의 HTML이 끝에 추가됩니다? 위의 코드 후 HTML이있는 경우, 당신은 readfile($filename)exitPHP를 통해 txt 파일을 강제로 다운로드하려면 HTML이 포함됩니다.

$fh = fopen($filename, 'w'); 
fwrite($fh, $data); 
fclose($fh); 

header('Content-disposition: attachment; filename='.$filename); 
header('Content-type: text/plain'); 
readfile($filename); 
+3

실제 페이지는 무엇입니까? 단일 HTTP 응답에서 두 개의 파일 (다운로드 및 HTML 문서)을 제공하려고합니까? 그렇게 할 수는 없지만 HTTP는 그렇게 작동하지 않습니다. – Quentin

+0

고마워요! 그 때 분명히 문제입니다. 다른 페이지가 페이지와 다운로드를 동시에 제공하는 것처럼 "연기"하는 것으로 나타났습니다. –

+0

HTML을 출력하는 다운로드 스크립트가있는 경우이를 분리해야합니다. 다운로드 스크립트는 다운로드 할 데이터를 제외하고는 아무 것도 출력하지 않아야하며, 다운로드가 시작되지 않으면 오류 메시지가 표시됩니다. – GordonM

답변

3

을 할 수 있습니다?

+1

고마워요. readfile() 후에 exit를 추가하면 완벽하게 작동합니다. 나는 출구가 페이지를 완전히 죽일 것이라는 인상을 받았다. –

+1

그것은 페이지를 죽이지 만 자동 정리 기능과 객체 소멸자를 먼저 실행하게하는 "능숙하게"수행합니다 ... 그러나 문제는 주석에 명시된 바와 같이 다운로드 파일과 HTML 페이지를 제공 할 수 없습니다 동시에, 그리고 당신이 그런 것처럼 보이는 것을 보았을 때, 그것은 단지 의장입니다. 일반적으로 HTML 페이지를 다운로드 한 다음 페이지가로드되면로드가 트리거되어 올바르게 게재 된 페이지를 실제로 변경하지 않습니다. – Jason

관련 문제