Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] pobieranie plików
hhg
post
Post #1





Grupa: Zarejestrowani
Postów: 316
Pomógł: 0
Dołączył: 5.07.2006

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


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
Go to the top of the page
+Quote Post
kossa
post
Post #2





Grupa: Zarejestrowani
Postów: 1 165
Pomógł: 9
Dołączył: 9.04.2002
Skąd: Toruń

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


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


--------------------
Go to the top of the page
+Quote Post
Mappet
post
Post #3





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 10.06.2004

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


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.


--------------------
Pozdrawiam
Go to the top of the page
+Quote Post
Kicok
post
Post #4





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


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' );


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
hank
post
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 25.09.2007

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


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

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

 



RSS Aktualny czas: 20.08.2025 - 02:10