Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Wymuszenie pobrania
Forum PHP.pl > Forum > PHP
Hectic
Pisałem już o tym, ale odpowiedzi nie uzyskałem smile.gif Jak wymusić na przeglądarce pobranie pliku na dysk? Po przeczytaniu kilku ciekawych wypowiedzi stworzyłem cos takiego:
  1. <?php
  2. header("Content-type: baza.sql"); // przesyłamy plik
  3. header("Content-Disposition: attachment; filename=baza.sql"); // ustawiamy jego nazwę
  4. readfile('baza.sql'); // treść znajduje się w pliku 
  5. ?>

Tylko w pliku zamiast treści pliku „baza.sql” wypisuje mi cały kod html strony do kopi bazy danych, dlaczego?
mike
A wystarczyło poczytać manuala: header()
Tam jest taki przykład:
  1. <?php
  2. // przesyłamy plik PDF
  3. header('Content-type: application/pdf');
  4.  
  5. // ustawiamy jego nazwę na downloaded.pdf
  6. header('Content-Disposition: attachment; filename="downloaded.pdf"');
  7.  
  8. // treść znajduje się w pliku original.pdf
  9. readfile('original.pdf');
  10. ?> 


Już wiesz gdzie masz błąd?
GrayHat
  1. <?php
  2.  header("Content-Type: application/force-download\n");
  3.  header("Content-Disposition: attachment; filename=$filename");
  4. ?>
Hectic
Z stamtąd to mam winksmiley.jpg Jedyne co widze to
  1. <?php
  2. header("Content-type: txt");
  3. ?>

Ale też nie działa winksmiley.jpg
Vogel
poczytaj o typach mime. nie ma czegos takiego jak "txt" jesli juz to "text/plain"
Hectic
Cytat(Vogel @ 2006-05-03 12:46:19)
poczytaj o typach mime. nie ma czegos takiego jak "txt" jesli juz to "text/plain"

Dzięki winksmiley.jpg Troszkę pokombinowałem tongue.gif i zawartość pliku „baza.sql” zapisuje się, ale przed nią wypisuje cały kod html strony ;/
GrayHat
a moj content-type pominales?
Hectic
To samo sad.gif
mike
A możesz pokazać swój cały kod?

Bo podejrzewam że Ty masz tam coś więcej niż te nagłówki. A nie powinieneś.
Hectic
  1. <?php
  2. #=====================================================#
  3. echo '
  4. <p class="functions">Kod mysql:</p><br>
  5. <table align="center">
  6. <tr>
  7. <td align="center">
  8. <form method="post">
  9. <TEXTAREA NAME="sql" COLS="120" ROWS="30" >';
  10.  
  11. /****************************/
  12. db_echo();
  13. /****************************/
  14.  
  15. echo '
  16. </TEXTAREA>
  17. </td>
  18. </tr>
  19. <tr>
  20. <td align="center">
  21. <input type="Submit" name="submit" value="Wykonaj kopię bazy danych">
  22. </form>
  23. </td
  24. </tr>
  25. </table>';
  26.  
  27. /****************************/
  28. $sql = $_POST['sql'];
  29.  
  30. /****************************/
  31. if(empty($sql)) 
  32. { }
  33. else
  34. { 
  35.  
  36. /****************************/
  37.  
  38.  
  39. $fp = fopen("baza.sql", "w"); // utworzenie pliku
  40. fputs($fp, $sql); // zapisanie danych
  41. fclose($fp); // zamknięcie pliku
  42.  
  43.  
  44. header("Content-type: text/plain"); // przesyłamy plik
  45. header("Content-Disposition: attachment; filename=baza.sql"); // ustawiamy jego nazwę
  46. readfile('baza.sql'); // treść znajduje się w pliku 
  47.  
  48. unlink(baza.sql); // kasoanie pliku
  49. /****************************/
  50.  
  51. }
  52. }
  53. ?>


db_echo() - to gotowy skrypt wyswietlania zawartosci sql
Kuziu
Czy mi sie zdaje czy wyskakuje Ci błąd Header already send questionmark.gif
Hectic
Nie nie ma czegoś takiego
mike
W tym pliku nie możes zmieć nic więcej poza wysyłaniem nagłówków mówiących o pobieraniu dokumentu (i o jego parametrach) oraz przesłaniem zawartości dokumentu.

Wszystko to co jest wcześniej musi zostać usunięte.
Hectic
Cytat(mike_mech @ 2006-05-04 09:31:10)
W tym pliku nie możes zmieć nic więcej poza wysyłaniem nagłówków mówiących o pobieraniu dokumentu (i o jego parametrach) oraz przesłaniem zawartości dokumentu.

Wszystko to co jest wcześniej musi zostać usunięte.

Dzięki winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.