Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Pobiera plik z kodem strony, a nie wygenerowaną zawartością
Forum PHP.pl > Forum > Przedszkole
Grandalf00
Witajcie! Mam kod, który z sukcesem generuje plik CSV - jest zapisywany na serwerze.

  1. if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['list']) && $_POST['list'] != "") {
  2. $select = $_POST['list'];
  3. $sql = "SELECT date FROM plan WHERE city = '$select' OR street LIKE '%$select,%'";
  4. $res = $dbc->query($sql);
  5. $row = $res->fetch_assoc();
  6. $date_list = explode(",",$row['date']);
  7. $header = "Subject,Start date,End date";
  8. $subject = "Wywóz";
  9. $fp = fopen("file.csv", "a+");
  10. fputs($fp,"$header\r\n");
  11. foreach ($date_list as $date) {
  12. $line = "$subject,$date.2017,$date.2017";
  13. fputs($fp,"$line\r\n");
  14. }
  15. fclose($fp);
  16. echo "<button>Pobierz</button>";


Jednak chciałbym aby po wygenerowaniu pliku użytkownik mógł go zapisać u siebie. Dlatego dodałem dalej
  1. header("Content-Type: text/csv");
  2. header('Content-Disposition: attachment; filename="file.csv"');}


Lecz dostaję plik z kodem html strony, a nie plik CSV, który zostaje wygenerowany.
nospor
Po pierwsze niggdzie w tym kodzie nie zwracasz uzytkownikowi tego pliku. Ustawienie naglowkow to tylko i wylacznie ustawienie naglowkow.
Po drugie jak cos zamierzasz slac do uzytkownika to nie mozesz nic slac innego w tym samym czasie, a ty procz pliku (ktorego defacto nie slesz - patrz punkt 1) slesz tez strone html
Grandalf00
Ok, czyli wiadomo coś więcej czemu nie działa. Więc jak należy zrobić to poprawnie? W Google wszelkie wątki dotyczące pobierania plików przez użytkowników opisują jedynie właśnie nagłówki.
nospor
Cytat
dotyczące pobierania plików przez użytkowników opisują jedynie właśnie nagłówki.
Nie prawda. Podane tam tez jest jeszcze ze musisz zwrocic zawartosc pliku. No sama w magiczny sposob sie nie zwroci. Tak wiec nie sciemniaj tongue.gif
Grandalf00
Nie ma potrzeby ściemniać. Jedna ze stron, na której szukałem informacji: http://forum.pasja-informatyki.pl/17313/ma...obieranie-pliku

Tutaj natomiast na końcu jest 'echo' http://funkcje.net/view/2/8/2230/index.html tylko, że w moim przypadku zawartość pliku dalej jest pomiędzy kodem html. Podpowiesz coś więcej czy tak będziemy sobie pisać?
nospor
Wlasnie, echo, readfile, cokolwiek co zwroci do przegladarki tresc pliku.

Cytat
że w moim przypadku zawartość pliku dalej jest pomiędzy kodem html.

To czas najwyzszy w koncu zaczac pisac porzadnie. Najpierw logika aplikacji, potem wyswietlanie a nie jeden wielki mix. Wowczas twoje problemy znikna.
Grandalf00
Zrobiłem zmiany, zapisywany plik ma taką zawartość jak potrzeba lecz mam jeszcze jedną sprawę. Nie we wszystkich lokalizacjach można plik zapisać przy pomocy Chrome. Podaje komunikat o niewystarczających uprawnieniach gdy próbuje zapisać plik na pulpicie, podczas gdy firefox, edge i IE zapisują bez problemu.
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.