2009-10-02 13 views
12

Kullanıcıların çevrimiçi olarak tamamladığı bir web formum var. Gönder düğmesine bastıkları zaman, onlar için bir dosya indirmeye başlayacaktır. Şu anda Form gönderdikten sonra otomatik başlangıç ​​dosyası indir

, ben form gönderme işlemek ve kullanıcı için uygun bir dosya oluşturmak ve uygun başlıklarıyla kapalı ateş. Bu hemen bir indirme başlar beri örn ...

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

Ancak, asıl form tarayıcısı tarafından ekranda bırakılır.

indirme tamamladığında gerçekten biraz "teşekkür ederiz" ekranına gitmek istiyorum (veya indirme başlamadan önce). Mümkün olduğunu biliyorum, çünkü ziyaret ettiğiniz hemen hemen her indirme sitesi bunu yapar (normalde indirme işleminden önce ilanların tamamını dolduracak şekilde).

Peki, bir saniye sonra indirme işlemini başlatan "Teşekkür ederim" ekranını nasıl gösteririm? doldurulmuş Ben formda olmadan tekrar indirmeyi dosya istemiyorsanız olarak

Nasıl herhangi bir çözümün geri düğmesi davranışını etkisini önerdi ki?

ben istemci üzerinde mevcut olan sunucuda PHP kullanıyorum ve Javascript (ve jQuery) güvenebilirsiniz.

Teşekkür ederiz.

cevap

23

bir META dosya indirmek için yenilemek size belgeyi ederiz ve orada koymak Sen formunu gönderebilir:

<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

sadece bir not - Eğer 'body' içine head' ve' P' 'içine' meta' giydin firefox – Andrej

+1

@Andrej içinde tetiklemez? – Gumbo

3

teşekkür ederim" şey söyler ikinci sayfasını ekleyin donwnload olacak, birkaç saniye" başlayacak ve javascript kullanarak indirme tetikler:

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

veya bir meta yönlendirmesi kullanın.

+0

Bir meta yönlendirme de çalışırken javascript'i neden kullanıyorsunuz? –

+0

Peki, benim yorumumdan Gumbo'nun gönderisine görebildiğim gibi, kendimi de META yönlendirmesini tercih ediyorum. Ancak, OP'nin “Javascript'e (ve jQuery'ye) güvenebileceği” konusunda yanıltıcıydım. Ancak, bazı şablon sistemleri, ürününe malzeme enjekte etmeyi zorlaştırıyor. Yani bazen JS bir seçenek olabilir. – middus

+0

Başlıkta da olmalı. Vücuttaki AFAIK javascript yasa dışıdır. –

0

Sen sayfanıza gizli bir iframe yerleştirin ve bu iframe'inize formunuzu gönderebilirsiniz.