문제

사용자가 온라인으로 완료하는 웹 양식이 있습니다. 그들이 제출을 누르면 파일 다운로드를 시작합니다.

현재 양식 제출을 처리하고 사용자에게 적합한 파일을 생성하고 적합한 헤더로 해고합니다. 예, ...

header('Content-type: "application/octet-stream"');
header('Content-Disposition: attachment; filename="yourfile.txt"');
header("Content-Transfer-Encoding: binary");

그러나 이것은 바로 다운로드를 시작하므로 원래 양식은 브라우저가 화면에 남겨 둡니다.

다운로드가 완료되면 (또는 다운로드가 시작되기 전에) "감사합니다"화면으로 가고 싶습니다. 당신이 방문하는 거의 모든 다운로드 사이트가이를 수행하기 때문에 가능하다는 것을 알고 있습니다 (일반적으로 다운로드가 시작되기 전에 광고로 가득 찬).

그렇다면 잠시 후 다운로드를 시작하는 "감사합니다"화면을 어떻게 표시합니까?

양식이 리필되지 않고 파일을 다시 다운로드하는 것을 원하지 않기 때문에 솔루션이 후퇴 버튼의 동작에 어떤 영향을 미칩니 까?

서버에서 PHP를 사용하고 있으며 클라이언트에서 사용할 수있는 JavaScript (및 jQuery)에 의존 할 수 있습니다.

고맙습니다.

도움이 되었습니까?

해결책

양식을 고맙습니다 문서화하고 거기에 두십시오 메타 새로 고침 파일 다운로드 :

<meta http-equiv="refresh" content="3;url=download.php">
<p>Thank you! The download will start in 3 seconds. If not, use this link to download the <a href="download.php">file</a></p>

다른 팁

"감사합니다. Donwnload가 몇 초 안에 시작됩니다"라는 두 번째 페이지를 추가하고 JavaScript를 사용하여 다운로드를 트리거합니다.

$(document).ready(function(){
  window.setTimeout(function(){
    window.location = 'http://yourdownloadhost.com/file.zip';
  }, 1500);
});

또는 메타 리디렉션을 사용하십시오.

숨겨진 iframe을 페이지에 삽입 하고이 iframe에 양식을 제출할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top