Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pobieranie plików i błędy w ich zawartości
tmk7
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 18.06.2009

Ostrzeżenie: (0%)
-----


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

Ten post edytował tmk7 18.06.2009, 13:50:54
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
vokiel
post
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
nospor
post
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Problem ze skryptem
Problem ze skryptem ma tu niemalze kazdy. Proszę poprawić tytuł mówiący coś o problemie.
Go to the top of the page
+Quote Post
tmk7
post
Post #4





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 18.06.2009

Ostrzeżenie: (0%)
-----


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?

Ten post edytował tmk7 19.06.2009, 11:07:19
Go to the top of the page
+Quote Post
Pilsener
post
Post #5





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


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ś.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 18:09