2012-08-31 6 views
0

아래의 코드 스 니펫에 설명 된 매우 기본적인 질문이 있습니다. 이것은 zip 파일을 다운로드하고자하는 훨씬 더 큰 프로그램의 관련 부분입니다. 주석과 함께 표시된 코드는 예상 브라우저 출력 "파일을 지금 다운로드하십시오."를 생성합니다.PHP 헤더 내용 처분

코드를 주석 해제하면 zip 파일이 브라우저에 올바르게 다운로드됩니다!

그러나 브라우저 출력이 생성되지 않습니다. 어떻게 제어권을 다시 얻을 수 있습니까? 사용자가 다른 옵션을 원합니다. (단, "Content-disposition"단일 줄을 주석으로 처리하면 제어가 손실되기에 충분합니다.)

코드에 코드를 포함시키고 코드에 넣으려고 시도했지만 ob_start, ob_end의 가능한 많은 조합 플러시, 등등, 모든 소용이 없습니다. 매우 근본적인 것을 간과하고 몇 가지 제안을 고맙게 생각할 것이라고 확신합니다.

감사합니다.

<?php 
$sZipFN = 'file.zip'; 
// header("Content-type: application/zip"); 
// header("Content-disposition: attachment; filename=$sZipFN"); 
// readfile($sZipFN); 
$sMsg = "Download the file now.";   
?> 
<html> 
    <body> 
    <p> <?php echo $sMsg; ?> </p> 
    </body> 
</html> 
+1

(단지 비활성화 자바 스크립트 경우) 페이지 상단 어딘가에 링크를 각 URL이 하나의 자원을 수행 할 수 있습니다 '다운로드가 시작되지 않으면 여기를 클릭하십시오'. ZIP 파일이거나 HTML 페이지입니다. 둘 다 아닙니다. – mario

+0

[PHP는 페이지를 표시하지 않고 다운로드 할 수 있습니다.] (http://stackoverflow.com/questions/11894891/php-wont-show-page-and-download) – mario

답변

1

당신은 할 수 없습니다 - 당신은 옵션 페이지로 리디렉션 한 다음이 다운로드를 시작합니다 자바 스크립트 리디렉션 (document.location = 'http://download.url/';)

를 통해 다운로드를 시작하고 같은 옵션 페이지에서 사용자를 떠날 필요가 염원.

포함하는 것을 잊지 마세요