2012-02-09 4 views
6

Celem jest pobranie porzuconego pliku backup.sql po uruchomieniu skryptu wyładowczego sql (z PHP). Zwykle porzucony plik .sql jest wyprowadzany (zapisywany) na serwerze. Następnie, gdy utworzę link do tego pliku, np. <a href="backup.sql">Download File</a>, plik otwiera się w przeglądarce po kliknięciu, zamiast pobierania.Jak utworzyć łącze do pobrania do pliku tekstowego?

  • chcę tylko zrobić prosty HREF LINK (do takiego pliku tekstowym), które pojawiają się z „Zapisz jako ..” okno na prostych lewym przyciskiem.

Jak to można zrobić?

Odpowiedz

3

Dodaj następujące wiersze do pliku .htaccess.

<Files "backup.sql"> 
ForceType applicaton/octet-stream 
Header set Content-Disposition attachment 
</Files> 
+0

To jest świetne, Rob. Dzięki za trik;) Działa to ładnie dla mnie, ale jeśli to możliwe, czy mogę to zrobić za pomocą okna "Zapisz jako ..."? –

+0

Powinieneś uzyskać okno dialogowe "Zapisz jako ..." używając tych reguł. (Jeśli otrzymujesz błąd serwera wewnętrznego, prawdopodobnie nie załadowałeś modułu nagłówków). –

+0

Nie Rob. Plik jest teraz zapisany za pomocą POJEDYNCZEGO kliknięcia w domyślny folder pobierania przeglądarki. Ale, ogólnie rzecz biorąc, chcę, aby przeglądarka pytała o okno dialogowe, aby zapisać (tak jak podczas zapisywania linku za pomocą prawego przycisku -> Zapisz jako). Ale, po prostu prosząc o wiedzę. Tak naprawdę nie potrzebuję wiedzieć. –

3

Inną opcją jest obsługujących go w pliku .php np download.php

mieć to w download.php

$path = "backup.sql" 
    header("Content-Type: application/octet-stream"); // 

    header("Content-Length: " . filesize($path));  

    header('Content-Disposition: attachment; filename='.$path); 

    readfile($path); 

następnie

<a href="download.php">Download File</a> 
+0

Tak wspaniały scenariusz, vikki. Dzięki za to;) Działa to ładnie dla mnie, ale jeśli to możliwe, czy mogę to zrobić z oknem "Zachowaj jako ..."? –

17

Albo można po prostu użyć nowa właściwość HTML5 download w tagu kotwicy twojego html.

Kod będzie wyglądać następująco

<a download href="path/to/the/download/file"> Clicking on this link will force download the file</a> 

To działa na Firefox i Chrome najnowszej wersji. Czy powinienem wspomnieć, że nie sprawdziłem tego w IE? : P

+2

działa na IE6 i właśnie zweryfikowaliśmy ...: P –

+0

W tych samych warunkach, jak wspomniane powyżej: konfiguracja przeglądarki przez użytkownika może wciąż monitować użytkownika o wybór między wyświetlaniem a zapisywaniem. Kiedy autor pliku html WIEDZY plik jest binarny i powoduje konsternację, jeśli jest wyświetlany, czy autor HTML nie może zezwolić tylko na opcję "Zapisz"? Wygląda na to, że pytanie PO pozostaje bez odpowiedzi. Czy są jakieś sufiksy plików (np. .exe), które zachowują się inaczej? – bootchk

+0

Fantastyczny prosty.! –