2009-10-02 7 views
12

사용자가 온라인으로 작성하는 웹 양식이 있습니다. 제출을 누르면 파일 다운로드가 시작됩니다.양식 제출 후 자동 시작 파일 다운로드

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

그러나 다운로드가 즉시 시작되므로 원래 양식이 브라우저에 남아 있습니다.

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

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

양식을 다시 채우지 않고 파일을 다시 다운로드하지 않으려면 어떻게 해결책을 제시하면 뒤로 버튼의 동작에 영향을 미칩니 까?

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

감사합니다.

답변

23

META 파일 다운로드에 새로 고침 당신에게 문서 감사가 넣어 양식을 보낼 수 :

<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> 
+0

그냥 메모 - 파이어 폭스에서 트리거하지 않습니다 – Andrej

+1

@Andrej'body'에'head'와'p'에'meta'를 넣었습니까? – Gumbo

3

당신을 감사합니다 "무언가를 말하는 두 번째 페이지를 추가하여 donwnload 것, 몇 초 만에 시작 "하고 javascript :

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

을 사용하여 다운로드를 트리거하거나 메타 리디렉션을 사용하십시오.

+0

메타 리디렉션이 작동하는 경우 자바 스크립트를 사용해야하는 이유는 무엇입니까? –

+0

Gumbo의 게시물에 대한 내 의견에서 알 수 있듯이, 나는 나 자신이 META 리디렉션을 선호합니다. 그러나 OP의 "Javascript (및 jQuery)에 의존 할 수 있습니다"라는 말은 오도되었습니다. 그러나 일부 템플릿 시스템을 사용하면 에 물건을 주입하기가 어렵습니다. 때로는 JS가 옵션 일 수 있습니다. – middus

+0

헤더에 있어야합니다. 몸에있는 AFAIK 자바 스크립트는 불법입니다. –

0

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