Reakcja na przycisk

0

Witam, mam takie pytanie. Męczę się już od jakiegoś czasu, aby za pomocą przycisku <button> była reakcja, a mianowicie chciałbym, aby po kliknięciu przycisku pobrał się plik, który mam na dysku. Działam na localhost, php5. Próbuję wciąż za pomocą formularza. Próbowałem na tej samej stronie, a więc w tym samym pliku, a także aby formularz wysłał do innej strony/pliku metodą $_POST. Niewiem czemu nawet nie reaguje na tą czy drugą metodę ($_GET) owy <button>. Jestem początkujący w programowaniu. Dziękuję z góry za pomoc :)

0

Najprostszy przykład to taki w którym będziesz potrzebował dwóch plików: jednego HTML oraz drugiego PHP.
Plik HTML powinien wyglądać mniej więcej tak jak poniżej, masz wycinek:

<form action="pobierzPlik.php" method="post">
  <button>Ściągnij...</button>
</form>

Plik php o nazwie, która widoczna jest w atrybucie "action" powyższego formularza, jest też dość prosty:

<?php
   header('Content-type: application/octet-stream');
   header('Content-disposition: attachment; filename=plik.xxx');
   $sciezkaDoPliku = "pobierzPlik.php";
   echo file_get_contents($sciezkaDoPliku);

Klikasz w przycisk, przeglądarka kieruje się do strony pobierzPlik.php. Ta strona to w całości skrypt php, w którym ładujesz dane z pliku, wyświetlasz je na wyjście (echo - to co przeglądarka wyświetli). Dzięki nagłówkom (header), dostaniesz komunikat o tym, że strona oferuje plik do ściągnięcia i czy aby nie chcesz zapisać pliku plik.xxx (to ten filename=... - tu możesz wpisać co Ci się żywnie podoba) na dysk ;)

0

echo file_get_contents($sciezkaDoPliku);
Tego jeszcze nie widziałem szukając rozwiązania po internecie. Dzięki wielkie. Działa :) no w końcu :P

0

zamiast: echo file_get_contents($sciezkaDoPliku); daj:
readfile($sciezkaDoPliku);
BEZ ECHO - readfile wypisuje zawartość sam.

jaka jest różnica? file_get_contents wywali Ci serwer jeżeli plik jest większy niż dostępna pamięć dla skryptu PHP. readfile nie wywali

1 użytkowników online, w tym zalogowanych: 0, gości: 1