Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] pobieranie plików
Forum PHP.pl > Forum > PHP
hhg
mam sposob na pobieranie plikow o anonimowej sciezce ale jest jeden mankament:
jezeli stosuje

Kod
$content = file_get_contents($location);
header("Content-Type: application/pdf");
echo $content;


czyli dla plików pdf, a ja np. mam ustawione automatyczne pobieranie pdfów na hdd a nie otwieranie w przegladarce. Przegladarka proponuje pobranie pliku który zawiera kod pdf-a ale nazywa sie download.php (czyli plik ktory zwiera wyzej wymieniony kod)

przez co użytkownik dostaje to co powinien ale nie znajac prawidlowego rozszerzenia nie moze otworzyc pliku...

da się jakoś wymusic na przegladarce propozycje pobrania oryginalnej nazwy pliku pdf?

mam nadzieje ze piszę w miare jasno
kossa
header" title="Zobacz w manualu PHP" target="_manual

nie analizowałem bo już późno ale w manualu masz w komentarzach przykłady jak to zrobić, wpadł mi w oko ale nie wczytywałem się w skrypt http://pl2.php.net/manual/en/function.header.php#47948 i masz tam chyba jak przesłać nazwę pliku, a jak nie w ym przykładzie to poszukaj tam


Łukasz
Mappet
Witam, odświeżę temat...
mógłby mi ktoś podpowiedzieć jakim sposobem najlepiej wywołać pobieranie pliku z obcego serwera czyli skryp jest na serwerze A a plik na serwerze B. Chcę teraz wywołać plik z serwera B.

wcześniej stosowałem coś takiego

  1. <?php
  2. $id = $url->_params[2];
  3. $song = $music->getSong($id);
  4.  
  5. $filesize = (int)($song->rozmiar * 1024 * 1024);
  6. $filename = DIR_MP3_FILES . '/' . $song->plik;
  7.  
  8.  header("Pragma: public");
  9. header("Expires: 0");
  10. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  11. header("Cache-Control: public");
  12. header("Content-Type: application/force-download");
  13. header("Content-Disposition: attachment; filename=".basename($filename).";" );
  14. header("Content-Transfer-Encoding: binary");
  15. header("Content-Length: ".$filesize);
  16. readfile("$filename");
  17. ?>


to działało fajnie w momencie gdy miałem plik na serwerze A czyli tam gdzie skrypt... lecz gdy plik znalazł się na serwerze B wywołanie trwało bardzo długo.
Kicok
Trwa bardzo długo, bo plik najpierw z serwera B jest pobierany na serwer A, a dopiero potem z serwera A jest wysyłany do przeglądarki.

Nie wydaje mi się, żeby dało się to rozwiązać inaczej niż przez: header( 'Location: http://serwerB.pl/plik.zip' );
hank
Witam,

ja mam nieco inny problem:/ kiedy wysyłam plik do klienta, tym sposobem

Kod
header("Content-type: application/octetstream");
   header("Content-Disposition: attachment; filename=".$nazwa_pliku);
   readfile('./folder/'.$nazwa_pliku);


to wtedy przeglądarka nie pozwala na równoczesne ściąganie pliku i przeglądanie witryny, tylko czeka na zakończenie pobierania.. Z kilku względów wolę uniknąć podawania w linkach bezpośrednich ścieżek do plików i ukryć przed klientem faktyczną strukturę katalogów na serwerze, lecz niestety ten sposób raczej odpada. Będę wdzięczny za jakiekolwiek wskazówki:) może content-type jest niewłaściwy?.. Pozdrawiam
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.