Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Wyświetlanie zdjęcia, headery
Forum PHP.pl > Forum > PHP
propage
Na niektórych komputerach/przeglądarkach zdjęcia z mojej storny nie odtwierają się, gdy nie wyświtlam ich bezpośrednio, a za pomocą skryptu

  1. <?
  2. $file=$_GET['url'];
  3.  
  4. $info = GetImageSize($file);
  5. $mime = $info['mime'];
  6. $data = file_get_contents($file);
  7.  
  8. header("Expires: Mon, 26 Jul 2020 05:00:00 GMT");
  9. header("Content-type: $mime");
  10. header('Content-Length: ' . strlen($data));
  11. echo $data;
  12. exit();
  13.  


Skrypt ma na celu dodanie zdjęciom hedera, który zapobiegnie ścienianiu zdjęć za przy każdym odświeżeniu strony.

Skrypt działa dobrze u mnie jednak, niektórzy twierdzą, że na ich komputerach zdjęcia się nie otwierają.

Zaobserwowałem, że również u mnie, pod Firefoksem, po odtworzeniu w przeglądarce konkrentgo wejści i co przy którymś odświrzeniu wyskakuje zamiast zdjęcia informacja, że zdjęcie zawiera błedy, jednak po chwili napis znika i zdjęcie zaczyna się ładować.
thek
Pamiętaj, że czasem serwer może mieć malutką zadyszkę. Pobieranie przy pomocy file_get_contents może w przypadku większych zdjęć spowodować długie oczekiwanie. Ja dlatego między innymi wolę zamiast zwykłych jpg wrzucać progressive jpg. Zdjęcie może nie ładuje się szybciej, ale użytkownik chociaż widzi, że coś się ładuje winksmiley.jpg
propage
da sie cos na to poradzic? nie mysle zeby byla to wina file_get_contents, poniewaz skrypt do tworzenia miniaturek, ktory napisalem rowniez dziala w opaciu o file_get_contents i tam nie pojawiaja sie takie problemy
thek
Tyle, że pobranie miniaturki przy użyciu file_get_contents z serwera i wyświetlenie jej jest niezbyt czasochłonne. Miniaturka ma bowiem zazwyczaj kilka kB, zaś pełny obrazek może bez problemu przekroczyć 1MB i próba ściągnięcia może się zakończyć przez serwer odpowiadający zerwaniem połączenia ze względu na zbyt długi okres oczekiwania na skrypt. Co innego gdy są kopiowane na tym samym serwerze (np. z temp do skryptu mającego go obrobić i stworzyć miniaturę) a co innego przesyłka między serwerem i klientem. By to próbować obejść wrzuć set_time_limit(0) tuż przed wysyłka obrazka.
Zresztą zobacz do komentarzy przy funkcji fpassthru
franki01
Też się z tym spotkałem. Nie obyło się bez mod_rewrite. Przeglądarka powinna widzieć plik o rozszerzeniu .jpg, .gif albo .png w zależności od obrazka. Dalsza część za '?' w adresie może być dowolna. Zrób sobie RewriteRule z image.jpeg i innych rozszerzeń, a wszystko powinno działać. Głupie, ale takie są cechy charakterystyczne przeglądarek z ery kamienia łupanego.
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.