Skocz do zawartości

Jak właściwie pobrać pliki z katalogu? - ścieżki bezwzględne


pafeu

Rekomendowane odpowiedzi

Jak pobrać wszystkie zdjęcia z katalogu

poprzednio używałem

$zdjecia= glob ("*.jpg");

i działało dobrze

ale teraz muszę zastosować ścieżki bezwzględne i poniższy kod nie działa

$zdjecia= glob ("https://".$_SERVER['HTTP_HOST'].dirname($_SERVER['REQUEST_URI'])."/*.jpg");

pomóżcie znaleźć błąd bądź inne rozwiązanie

dodam jeszcze, że skrypt ładujący zdjęcia umieszczony jest w index a zdjęcia znajdują się w: https://ommo.pl/oswietlenie-led/gu-10/

i chcę aby po wejściu na stronę produkt-1 wyświetlało zdjęcia umieszczone w tym katalogu.

PS:

Wiem co chcę osiągnąć - chcę pobrać zdjęcia z katalogu, zdjęcia w pętli z opisami i to już mi działa ale teraz muszę zastosować ścieżki bezwzględne i jak pisałem wyżej moje rozwiązanie nie działa.

Odnośnik do komentarza
Udostępnij na innych stronach

'oswietlenie-led/gu-10/*.jpg' trzeba by chyba zastapic tym '../../*.jpg'

tak, tak o tym to ja wiem,

ścieżki bezwzględne też wiem jak stosować

chodzi mi o to aby zastosować ścieżki bezwzględne w tym konkretnie przypadku - w połączeniu z pobieraniem plików które będą się znajdować na różnych poziomach ../ i ../../ i ../../../ a podkatalogów będzie kilka i tak jak napisałem skrypt będzie znajdował się w index

Odnośnik do komentarza
Udostępnij na innych stronach

to moze tak

$zdjecia= glob ("https://".$_SERVER['HTTP_HOST'].dirname($_SERVER['REQUEST_URI'])."/*.jpg"); echo $zdjecia; -> odpowiedz Array

$zdjecia= "https://".$_SERVER['HTTP_HOST'].dirname($_SERVER['REQUEST_URI'])."/*.jpg"; echo $zdjecia; -> odpowiedz https://localhost/php/*.jpg

Odnośnik do komentarza
Udostępnij na innych stronach

to moze tak

$zdjecia= glob ("https://".$_SERVER['HTTP_HOST'].dirname($_SERVER['REQUEST_URI'])."/*.jpg"); echo $zdjecia; -> odpowiedz Array

$zdjecia= "https://".$_SERVER['HTTP_HOST'].dirname($_SERVER['REQUEST_URI'])."/*.jpg"; echo $zdjecia; -> odpowiedz https://localhost/php/*.jpg

w tym jest problem, że właśnie tego przykładu nie chce ładować do Array problem pojawia się gdy stosuję https://".$_SERVER['HTTP_HOST'].dirname($_SERVER['REQUEST_URI'])."/*.jpg"

a jak zastosuję "jakaś ścieżka/*.jpg" to wszystko jest ok - problem jest w tych ścieżkach bezwzględnych jak je zastosować aby ładowały pliki do array

Może jest jakiś sposób na ten problem. Może trzeba zastosować całkiem inne rozwiązanie pobierania plików. Problem w tym, że ja nie wiem jakie. Mile widziane sugestie.

Odnośnik do komentarza
Udostępnij na innych stronach

rozumiem ze zdjecia sa w w folderze glownym

to -> "https://".$_SERVER['HTTP_HOST']."/*.jpg" bedzie do nich sciezka bezwgledna

e/ tam jest jakas funkcja dodajaca znaczniki html i moze ona cos zmienia

Odnośnik do komentarza
Udostępnij na innych stronach

rozumiem ze zdjecia sa w w folderze glownym

to -> "https://".$_SERVER['HTTP_HOST']."/*.jpg" bedzie do nich sciezka bezwgledna

e/ tam jest jakas funkcja dodajaca znaczniki html i moze ona cos zmienia

zdjęcia są w katalogu, do którego prowadzi ścieżka:

https://ommo.pl//produkty/komputery/

https://ommo.pl//produkty/komputery/dyski/

https://ommo.pl//produkty/komputery/dyski/ssd/

i wyświetlaniem tych wszystkich zdjęć w katalogach, które wymieniłem ma zająć się skrypt, który jest w https://ommo.pl/index.php

i w tym momencie jest potrzeba zastosowania ścieżki bezwzględnych

jeżeli chcę się dostać do tylko jednego pliku podając ścieżkę

echo "<img src=https://".$_SERVER['HTTP_HOST'].dirname($_SERVER['REQUEST_URI'])."/2.jpg>"

to skrypt widzi plik

ale jeżeli chcę załadować wszystkie zdjęcia

$zdjecia= glob ("https://".$_SERVER['HTTP_HOST'].dirname($_SERVER['REQUEST_URI'])."/*.jpg");

to już tych plików nie widać - po prostu nie ładuje nic . W wyniku dostaję Array ( )

wnioskuję z tego, że ścieżka, którą mam jest w porządku.

Skupmy się nad załadowaniem kilku zdjęć używając już wymienionej ścieżki ale w połączeniu z innym sposobem ładowani - podejrzewam że taki jest.

Odnośnik do komentarza
Udostępnij na innych stronach

ja zrobilem tak

$domena = 'https://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['REQUEST_URI']);

$obrazki = 'images/'; // mam w katalogu

foreach (glob($obrazki.'/*.png') as $value) echo $domena.'/'. $value. '<br />';

wynik:

https://localhost/php/images/01.png

https://localhost/php/images/02.png

https://localhost/php/images/03.png

https://localhost/php/images/Backward.png

https://localhost/php/images/Book.png

https://localhost/php/images/Folder.png

https://localhost/php/images/Info.png

https://localhost/php/images/LorryGreen128.png

https://localhost/php/images/Note128.png

https://localhost/php/images/UserIn48.png

wystarczy dodac <img src="" itd i beda sie wyswietlac z sciezka bezwzgledna

widzisz cala domene i pelna sciezke teraz dostosuj sobie do swoich potrzeb

Odnośnik do komentarza
Udostępnij na innych stronach

@pafeu: manual: https://php.net/glob

https://www.stat4seo.pl/upload/20120311-hkq-88kb.jpg

Glob zwraca tablicę więc nie możesz po prostu tego wyniku wyświetlić za pomocą echo. W manualu masz przykład z użyciem pętli foreach i z niej proponuję Ci skorzystać. Ew. poczytaj też o implode - w zależności czego dokładnie potrzebujesz.

logo-stat4seo-blue-small.png

Odnośnik do komentarza
Udostępnij na innych stronach

ja zrobilem tak

$domena = 'https://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['REQUEST_URI']);

$obrazki = 'images/'; // mam w katalogu

foreach (glob($obrazki.'/*.png') as $value) echo $domena.'/'. $value. '<br />';

...

tak ale jak do zmiennej $obrazki przypisać dirname($_SERVER['REQUEST_URI'])

bo katalogi będą się zmieniały w zależności na jaką podstronę wejdziemy

zdjęcia nie będą w jednym katalogu!

https://localhost/php/images/dobre/01.png

https://localhost/php/images/okrągłe/zielone/02.png

https://localhost/php/images/komputery/dyski/ssd/03.png

inaczej mówiąc jak zamienić to

foreach (glob("*.*g") as $zdjecie){
	echo "<img src=".$zdjecie." width=100px />";
	}

na to

foreach (glob(dirname($_SERVER['REQUEST_URI']).'/'."*.*g") as $zdjecie){
	echo "<img src=".$zdjecie." width=100px />";
	}

może to trzeba zrobić całkiem inaczej - podpowiedzcie jak?

Odnośnik do komentarza
Udostępnij na innych stronach

Ale o co chodzi ? Musisz określić ścieżkę bazową do katalogu zdjęć i dodać ewentualnie dodatkowe nazwy. Dziwne problemy co niektórzy mają ....

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

...Musisz określić ścieżkę bazową do katalogu zdjęć ...

chyba dobrze chcę aby ścieżka była określona przez dirname($_SERVER['REQUEST_URI'])

bo rozumiem, że jeśli wpiszę https://ommo.pl/produkty/

to dirname($_SERVER['REQUEST_URI'])

przepisze mi

<img src=".dirname($_SERVER['REQUEST_URI']).'/'."1.jpg" />

na

<img src="produkty/1.jpg" />

ale to nie chce działać

inaczej mówiąc

Założenie jest takie, że po wejściu do katalogu, który jest wskazywany przez

dirname($_SERVER['REQUEST_URI'])

pokazać wszystkie zdjęcia w nim zawarte.

Odnośnik do komentarza
Udostępnij na innych stronach

mod rewrite tworzy ci wirtualna sciezke a skrypt zaczyna szukac od niej folderu image dlatego nie trafia

na serwerze jest katalog_glowy/images/podkatalogi/*.jpg

ale!

jak masz https://ommo.pl/produkty/ to zrobilo sie takie cos katalog glowny/produkty/images/podkatalogi/*jpg <- jest roznica

wiec

albo robisz adres bezwzgledy dla zdjec na katalog images https://ommo.pl/images/podkatalogi/*.jpg albo tak przekierowujesz na katalog ../images/podakatalogi/*.jpg (cofniecie sie o jeden katalog do gory)

nie umiem tego lepiej wytlumaczyc

tak czy inaczej pozbywasz sie tego wirtalanego folderu /produkty/

pozdr

Odnośnik do komentarza
Udostępnij na innych stronach

A co ma $_SERVER['REQUEST_URI'] wspólnego ze ścieżką do zdjęć ?

Zmienna $_SERVER['REQUEST_URI'] zwraca ścieżkę URL dla danego żądania HTTP która wcale nie musi się pokrywać z katalogiem w którym przechowywane są zdjęcia .

---

Informacja o tym gdzie dana kategoria produktów przechowuje swoje zdjęcia powinny być przechowywane w bazie danych razem z pozostałymi informacjami o danym produkcie. Wtedy nie musisz "motać" się co właśnie robisz z jakimiś ścieżkami pobieranymi z adresu zadnia HTTP zwłaszcza jak by ci przyszło serwować grafiki z bardziej wydajnego serwera tak zwane "static." lub z chmury.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

... nie musi się pokrywać z katalogiem w którym przechowywane są zdjęcia .

@Mion

i tutaj zapewne masz rację

powiedz jak się do tego dobrać aby osiągnąć zamierzony efekt

@Kayman

na serwerze nie mam katalogów wirtualnych - wszystkie katalogi na które wskazuję są fizycznie na serwerze

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności