2016-09-26 2 views
2

다음 코드는 내 것입니다.에코와 filedownload 함께 PHP에서

나는 파일을 다운로드하고 PHP에서 함께 울리고 싶다. 그러나 코드의 끝에 에코가 작동하지 않습니다,이 코드를 수정하는 방법?

$filename = trim($conf['savedir']).$_GET['task'].".".$_GET['hash'].".xml"; 
$downname = $_GET['task'].'.'.$_GET['hash'].'.xml'; 
$fp = fopen($filename, 'r'); 
if($fp == null) 
{ 
    echo "Wrong Access1"; 
} else { 
    header('Content-type:text/xml charset=utf-8'); 
    header('Content-disposition: attachment; filename='.$downname); 
    header('Content-length:'.filesize($filename)); 
    header('Content-transfer-encoding: binary'); 
    header('Pragma: no-cache'); 
    header('Expires: 0'); 
    fpassthru($filename); 
    fclose($fp); 
    echo $_GET['task'].'.'.$_GET['hash'].'.xml file download.'; 
} 
+5

하나의 HTTP 요청은 파일 다운로드 또는 HTML 출력 중 하나만 응답 할 수 있습니다. 이것은 PHP 문제가 아니며 웹이 작동하는 방식입니다. –

+0

왜 에코가 작성되었는지 알고 있습니까? 파일에? –

+0

예 에코가 파일에서 왜곡 된 이유를 알고 있습니다. 파일과 에코 메시지를 모두 브라우저에 보내므로 –

답변

0

체감 @ 마크 후원자는 에코와 같은 요청에 대해 동시에 다운로드 할 수 있지만 뭔가를 에코하고 파일을 다운로드 할 수있는 몇 가지 "트릭"가 없습니다 말했다.

<script type="text/javascript"> 
    window.open('test.php?task=<?=$_GET['task']?>&hash=<?=$_GET['hash']?>', '_blank'); 
</script> 
<?php 
echo $_GET['task'].'.'.$_GET['hash'].'.xml file download.'; 

그래서, 자바 스크립트 코드에 $ _GET 변수를 전달합니다 :

의 질문에서 코드가 test.php 파일에 위치하며, 사용자가 울부 짖는 소리 코드가 포함 된 파일을 요청하는 것을 가정하자 test.php 다운로드를위한 새 창을 열고 현재 창에 메시지를 표시합니다.

+1

귀하의 솔루션에 감사드립니다. 귀하의 솔루션은 제 아이디어를 촉구합니다. 하지만 내 코드의 내용은 다운로드가 아닙니다. –

+0

안녕하세요. 여기서 "if-else"지시 사항을 모두 옮기고 "test.php"에서 다운로드 기능 만 사용하도록 할 수 있습니다. 그렇지 않으면 다운로드 스크립트에서 어떤 것을 울리는 경우 모든 출력이 시작 또는 끝에 있습니다. 다운로드 한 파일. – mihutz

관련 문제