다음은 내가하려는 일입니다. 나는 또한 쉼표로 분리 된 텍스트 파일로 다운로드 할 수 있기를 원하는 일련의 보고서를 가지고있다. 나는 사람들이 단순히 파일을 만드는 것보다 결과를 출력한다고 말하는 수많은 페이지를 읽었지만, 시도 할 때 단지 페이지에 출력한다.PHP를 사용하여 텍스트 파일을 만들고 다운로드하십시오
나는 각각의 형식에서이 그들이 파일을 수출하려는 경우 그래서 게시물에 내가 확인하실 수 있습니다
Export File<input type="checkbox" name="export" value="1" />
을보고합니다. 그들은 내가 이런 일을하려고한다면 :
if($_POST['export'] == '1')
{
$filename = date("Instructors by DOB - ".$month) . '.txt';
$content = "";
# Titlte of the CSV
$content = "Name,Address,City,State,Zip,DOB\n";
for($i=0;$i<count($instructors);$i++)
$content .= ""; //fill content
fwrite($filename, $content);
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Length: ". filesize("$filename").";");
header("Content-Disposition: attachment; filename=$filename");
header("Content-Type: application/octet-stream; ");
header("Content-Transfer-Encoding: binary");
readfile($filename);
}
기본적으로 페이지는 새로 고침되지만 다운로드를 위해 푸시되지 않습니다. 아무도 내가 누락 된 부분을 지적 할 수 있습니까?
수정 나는 완전히 명확하지 않았다고 생각합니다. 이것은 단지 파일을 만들고 다운로드하는 페이지가 아니며 보고서를 표시하는 페이지에 있습니다. 그래서 exit(); readfile 다음에 나머지 페이지가 공백으로로드됩니다. 이 페이지에도 보고서를 표시해야합니다. 나는이 페이지가 헤더 정보를 이미 보내 왔기 때문에 이것이 다운로드되지 않은 이유와 관련이있을 수도 있다고 생각한다.
이에게 쓰는 후 파일을 닫으십시오 수행 한 후 스크립트를 종료해야합니다 .. 그 도움을합니까? – SuperSaiyan
파일이 생성 되었습니까? 또한'readfile()'다음에 스크립트를 종료해야합니다. – nickb
디스플레이와 동일한 페이지에서 다운로드 할 수있는 콘텐츠에 대한 링크를 생성하지 않는 이유는 무엇입니까? 그렇게하면 보고서를 중단없이 볼 수 있고 보고서를보기 전에 다운로드할지 여부를 먼저 결정하기보다는 보고서를 다운로드할지 여부를 선택할 수 있습니다. 사전 대비 대 반응. 이렇게하면 헤더 문제가 해결됩니다. – aowie1