2011-07-06 8 views
2

나는 창을 열고 사용자가 파일 (download.php)을 다운로드 할 수있게 해주는이 코드를 발견했다.PHP : 다운로드 파일 링크를 게시하십시오

header('Content-Description: File Transfer'); 
header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment; filename=' . basename($file)); 
header('Content-Transfer-Encoding: binary'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize($file)); 
ob_clean(); 
flush(); 
readfile($file); 
exit; 

사용자가 팝업을 통해 서버에서 파일을 다운로드 할 수 있도록하는 것은 잘 작동한다. 창,하지만 두 가지 문제가 있습니다.

  1. 이 코드 블록을 실행하기 전에 화면 (브라우저)에 일부 텍스트 인쇄가 있습니다. 그러나 .php 파일이 맨 마지막에이 블록과 함께 실행될 때 화면에 아무 것도 인쇄되지 않고 바로 다운로드로 이동합니다. 어떻게하면 브라우저에 인쇄물을 인쇄하고 파일을 다운로드 할 수 있습니까?

  2. 그런 다음 물건을 인쇄 한 후에 링크를 대신 삽입하는 것이 좋겠다고 생각합니다. 다운로드 할 링크 (href = 'download.php')를 클릭하면 빈 화면이 반환되고 그 외에는 아무 것도 표시되지 않습니다.

누군가가 차임하고 도움을 줄 수 있습니까? 티아!

+1

'header' 함수를 사용할 때마다 브라우저로 어떤 출력을 보내기 전에해야한다는 것에주의하십시오. 헤더는 항상 페이지 내용보다 먼저 전송됩니다. –

+0

오, 별도의 페이지가 필요합니다. 자바 스크립트를 사용하여 팝업 창을 만드는 방법을 알아 냈습니다.하지만 새 팝업 창에서 PHP 스크립트를 실행하는 방법을 아직 이해하지 못했습니다. – musicliftsme

+1

팝업 창이 별도의 페이지로 연결되는 URL로 열립니다. –

답변

1

브라우저의 HTML을 반환 할 수 없습니다. 브라우저의 단일 페이지 요청에서 파일을 다운로드 할 수 없습니다. 그것은 하나 또는 다른 것을 기대합니다. 텍스트가있는 팝업 창을 열면 Javascript가 파일을 보내는 두 번째 PHP 스크립트로 리디렉션됩니다.

1

에코가 있으면 모두 다운로드에 포함됩니다. 두 개의 별도 페이지가 필요합니다 ... 하나는 텍스트를 표시하고 다른 하나는 파일을 표시합니다.

1

각 페이지는 한 가지 방식으로 해석 할 수 있습니다 만, HTML/PDF/이미지/다운로드 파일 등 ...
솔루션 : 당신은 사용자가 HTML에 표시하고 싶은 일을 (링크/텍스트 어떤 적) 그들이 다운로드 링크를 누를 때 숨겨진 iframe 내부에서 열 수 있습니다. 와서이이 문제를 해결하기 위해 엉덩이를 걷어차의 방법이 아니다 불평하지 않는 지금

, 우리는 등 2011 년에
이 (HTML5를 될 수있는 것입니다이 문제를 해결하기 위해 (자바 나 플래시를 사용하여 제외) 유일한 방법입니다 멋진 솔루션이 있지만 대부분의 사용자 브라우저는이 기능을 지원하지 않습니다.

관련 문제