Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie plików i błędy w ich zawartości
Forum PHP.pl > Forum > PHP
tmk7
Witajcie

Mam problem z pewnym skryptem php, który wystawia na stronie pliki do pobrania. Kwestia rozbija się o pobierania plików doc i xls. Przy pobieraniu przez przeglądarkę pliku nie wystepuje z jej strony sugestia o wybranie odpowiedniej aplikacji do otwarcia dokumenu. To jest nie o tyle istotne co fakt, że przy otwarciu dokumentu w OO czy MS Office wyświetlne zostają smieci - fragmenty treści z elementami panelu html i tłem jednej ze stopek - ogolnie kaszana.

Poniżej fragment kodu, który moim zdaniem jest winny tej sytuacji:

  1. <?php
  2. function PobierzPlik($kat, $nazwa)
  3. {
  4.        global $sc_baz, $katalog, $suffix, $katNadrz;
  5.        if (NormalizujSciezki($kat) == -1)
  6.        {
  7.                BrakDostepuPlik();
  8.                echo '<tr><td colspan="3" style="background-color: #eeeeee">';
  9.                echo '<a href="">';
  10.                echo '[/]';
  11.                echo '</a>';
  12.                echo '</td></tr>';
  13.                return;
  14.        }
  15.  
  16.        header("Last-Modified: " . date("r", filemtime($katalog.'/'.$nazwa)));
  17.        header("Content-type: application/octet-stream");
  18.        header("Content-Disposition: attachment; filename=\"{$nazwa}\"");
  19.        header("Content-Transfer-Encoding: binary");
  20.  
  21.        readfile($katalog.$nazwa);
  22. }
  23. ?>


Wdzięczny będę za wszelkie uwagi
vokiel
Zestaw nagłówków do zmuszenia przeglądarek do pobrani pliku
  1. <?php
  2. header("Content-Type: application/vnd.ms-excel name=\"$baseName\" charset=UTF-8");
  3. header("Content-Disposition: application/x-download; filename=$baseName");
  4. header("Content-Length: $filesize");
  5. header("Content-Type: application/force-download");
  6. header("Content-Type: application/octet-stream");
  7. header("Content-Type: application/download");
  8. ?>
nospor
Cytat
Problem ze skryptem
Problem ze skryptem ma tu niemalze kazdy. Proszę poprawić tytuł mówiący coś o problemie.
tmk7
Niestety żaden z tych nagłówków nie jest w stanie rozwiązać mojego problemu. Jestem w stanie jedynie podpowiedzieć przeglądarce jaki jest rodzaj pobieranego dokumenu, natomiast sama zawartość jest nadal mieszana z elementami witryny.

Jest jakaś globalna zasada, która zabroni mieszania treści w dokumentach?

Czy kolejność umieszczania nagłówków ma znaczenie?
Pilsener
Wszystko ma znaczenie. A skąd przeglądarka ma wiedzieć jaki plik jej wysyłasz, jak dajesz:
Cytat
application/octet-stream
?

Daj:
  1. <?php
  2. header("Content-Type: application/vnd.ms-excel");
  3. ?>


I nie wysyłaj od razu całego pliku do przeglądarki, bo szkoda zasobów - porcjuj to jakoś.
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.