2009-10-02 12 views
12

Mam formularz internetowy, który użytkownicy wypełniają online. Po naciśnięciu przycisku submit rozpocznie się pobieranie pliku.Automatyczne pobieranie pliku po przesłaniu formularza

W tej chwili przetwarzam przesyłanie formularzy i generuję odpowiedni plik dla użytkownika i uruchamiam go za pomocą odpowiednich nagłówków. Np. ...

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

Jednak ponieważ od razu rozpoczyna się pobieranie, pierwotny formularz jest pozostawiony na ekranie przez przeglądarkę.

Naprawdę chciałbym przejść do ekranu "Dziękujemy" po zakończeniu pobierania (lub przed rozpoczęciem pobierania). Wiem, że jest to możliwe, ponieważ robi to prawie każda strona pobierania, którą odwiedzasz (zwykle w celu przepompowania Cię pełnym reklamom przed rozpoczęciem pobierania).

Jak więc wyświetlić ekran "Dziękujemy", który rozpoczyna pobieranie po chwili?

Jakie będą proponowane rozwiązania wpływające na działanie przycisku Wstecz, ponieważ nie chcę, aby plik był ponownie pobierany bez ponownego wypełniania formularza?

Używam PHP na serwerze i mogę polegać na JavaScript (i jQuery) dostępnych na kliencie.

Dziękuję.

Odpowiedz

23

Można wysłać formularz do Dziękuję dokument i tam umieścić META odświeżyć do pobrania pliku:

<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

tylko uwaga - nie uruchamia się w firefoxie – Andrej

+1

@Andrej Czy umieściłeś 'meta' w' head' i 'p' w' body'? – Gumbo

3

dodać drugą stronę, która coś mówi „dziękuję, twój donwnload będzie rozpocząć w kilka sekund "i uruchamia pobieranie za pomocą javascript:

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

lub użyj przekierowania meta.

+0

Dlaczego warto używać javascript, gdy działa również przekierowanie meta? –

+0

Cóż, jak widać z mojego komentarza do postu Gumbo, ja sam wolę przekierowanie META. Jednak byłem trochę wprowadzony w błąd przez OP "może polegać na JavaScript (i jQuery)". Jednak niektóre szablony utrudniają wstrzykiwanie rzeczy do . Więc czasami JS może być opcją. – middus

+0

Powinien być również w nagłówku. AFAIK javascript w organizmie są nielegalne. –

0

Możesz wstawić ukrytą strukturę iframe na swoją stronę i przesłać formularz do tego elementu iframe.

Powiązane problemy