Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Logika uploadu zdjęć
james8
post
Post #1





Grupa: Zarejestrowani
Postów: 134
Pomógł: 0
Dołączył: 29.07.2008

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


Witajcie,

Buduje mały portal, załóżmy że będzie to baza firm, dla każdej firmy chciałbym dodać logo w formacie graficznym.

Zastanawiam się jakiej logiki użyć do przechowywania zdjęć. Początkowo myślałem o uploadzie zdjęć do bazy, ale sądzę że przy dużym natężeniu ruchu baza może powodować powolne działanie serwisu.

Jakie są inne możliwości uploadu grafiki może poprzez protokół ftp? Jak generować linki do zdjęć? Jak kojarzyć pliki z rekordami w bazie? Może tworzyć katalogi dla każdej firmy żeby nie pogubić się ze zdjęciami?

Ten post edytował james8 30.08.2013, 08:16:34
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
nospor
post
Post #2





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




Zdjecie do serwisu dodajesz normalnie, przez formularz, tylko ze nie zapisujesz go w bazie a na dysku, a w bazie trzymasz tylko info o nim - dzieki temu nie stracisz informacji gdzie ono jest i moze swobodnie je wyswietlac dla danej firmy


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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





Grupa: Zarejestrowani
Postów: 134
Pomógł: 0
Dołączył: 29.07.2008

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


Cytat(nospor @ 30.08.2013, 09:15:47 ) *
Zdjecie do serwisu dodajesz normalnie, przez formularz, tylko ze nie zapisujesz go w bazie a na dysku, a w bazie trzymasz tylko info o nim - dzieki temu nie stracisz informacji gdzie ono jest i moze swobodnie je wyswietlac dla danej firmy


Czy dobrze będzie tworzyć katalog dla każdej firmy (i nadawać mu nazwę tej firmy) a zdjęciom nadawać jednolitą nazwę np. logo.jpg?

Czy lepszym rozwiązaniem będzie utowrzenie jednego zbiorczego katalogu do przechowywania zdjęć, a każdemu ze zdjęć nadawać nazwę numeryczną (np zwiększającą się o jeden)?

Przyszedł mi też pomysł do głowy, że zdjęcia można numerować rekordem ID firmy, jeśli dana firma będzie miała więcej zdjęć niż jedno można zastosować następującą numerację: ID_kolejnyNumer

Albo utworzyć katalog odpowiadający ID firmy w bazie, a zdjęcia numerować numerycznie rosnąco

Ten post edytował james8 30.08.2013, 08:29:19
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




A rob jak ci wygodnie, struktura katalogow w tej sytuacji bedzie miala jedynie znaczenie wizualne dla programisty.
Osobiscie nie widzie sensu robic folderow na firmy, szczegolnie ze zamierzasz tam wkladac tylko po jednym zdjeciu.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
james8
post
Post #5





Grupa: Zarejestrowani
Postów: 134
Pomógł: 0
Dołączył: 29.07.2008

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


Cytat(nospor @ 30.08.2013, 09:27:25 ) *
A rob jak ci wygodnie


Problem w tym że sam nie wiem jak jest mi bardziej wygodnie, jestem strasznie niezdecydowany hehe

Cytat(nospor @ 30.08.2013, 09:27:25 ) *
Osobiscie nie widzie sensu robic folderow na firmy, szczegolnie ze zamierzasz tam wkladac tylko po jednym zdjeciu.


Na dzień dzisiejszy będzie to tylko jedno zdjęcie, ale w przyszłości może wystąpić potrzeba dodania większej ilości zdjęć


Wpadłem na pomysł który podsunął mi nospor, można zrobić tak:

Wgrywać zdjęcia na serwer, stworzyć zmienną przechowującą ścieżkę dostępu do pliku, natomiast w bazie stworzyć kolumnę przechowującą adres do pliku.

Ta dam! Dobrze myślę?
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




Cytat
Wgrywać zdjęcia na serwer, stworzyć zmienną przechowującą ścieżkę dostępu do pliku, natomiast w bazie stworzyć kolumnę przechowującą adres do pliku.
No a niby oczym ja na samym poczatku ci powiedzialem? Ze w bazie masz trzymac info gdzie to zdjecie jest...ot mi geniusz.... tongue.gif
Ino nie musisz trzymac calej sciezki do zdjecia, tylko sciezke wzgledna. Całą to sobie dobudujesz przy wyswietlaniu
Powód edycji: [nospor]:


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
james8
post
Post #7





Grupa: Zarejestrowani
Postów: 134
Pomógł: 0
Dołączył: 29.07.2008

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


Cytat(nospor @ 30.08.2013, 09:45:11 ) *
No a niby oczym ja na samym poczatku ci powiedzialem? Ze w bazie masz trzymac info gdzie to zdjecie jest...ot mi geniusz.... tongue.gif
Ino nie musisz trzymac calej sciezki do zdjecia, tylko sciezke wzgledna. Całą to sobie dobudujesz przy wyswietlaniu


tongue.gif
Go to the top of the page
+Quote Post
llukasz
post
Post #8





Grupa: Zarejestrowani
Postów: 46
Pomógł: 1
Dołączył: 15.05.2007

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


Najlepiej jest zrobić jakaś nazwę sztuczną dla pliku graficznego (może być hash sha)

Następnie tworzysz katalogi - powiedzmy 5 pięter - tak że jak plik nazywa się abcd123 to jest w ścieżce a/b/c/d/1/abcd123.jpg

W bazie przechowujesz informację w formie abcd123.jpg

To jest chyba najbezpieczniejsze rozwiązanie i najefektywniejsze wydajnościowo smile.gif

Pozdr.
Go to the top of the page
+Quote Post
Turson
post
Post #9





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Jak już zamierzam trzymać wszystkie zdjęcia w jednym folderze (co jest najlepszym rozwiązaniem), musisz generować nazwę i sprawdzać, żeby nie było duplikatów.
Go to the top of the page
+Quote Post
waldemi
post
Post #10





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 5.03.2007
Skąd: Leszno

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


Cytat(TursoN @ 30.08.2013, 14:02:34 ) *
Jak już zamierzam trzymać wszystkie zdjęcia w jednym folderze (co jest najlepszym rozwiązaniem), musisz generować nazwę i sprawdzać, żeby nie było duplikatów.

Żeby nie było duplikatów najlepiej jako nazwę pliku użyć znacznika czasu. 100 % gwarancji że się nie powtórzą.
Go to the top of the page
+Quote Post
Crozin
post
Post #11





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


1. Nazwa to mniej lub bardziej losowy ciąg znaków, który losujesz aż uzyskasz unikalny wariant (niemal zawsze będzie to za pierwszym razem). To na podstawie czego losujesz nie ma większego znaczenia. Istotne jest tylko byś sprawdzał czy aby na pewno wylosowany ciąg jest unikalny. W żadnym wypadku nie korzystaj ze wspomnianego wyżej znacznika czasu, bo ten nie daje absolutnie żadnej gwarancji unikalności.
2. Pierwszych kilka znaków wylosowanej nazwy możesz potraktować jako nazwy podkatalogów, np. losując "dsadcznsdsado32m2e12dsadsawqkje213.png" finalna ścieżka to "dsa/dcz/nsd/sado32m2e12dsadsawqkje213.png". Jest to o tyle przydatne, że zmniejsza ilość plików w pojedynczych katalogach, co samo w sobie złe nie jest, ale jeżeli chciałbyś przeglądnąć zawartość katalogu z setkami tysięcy plików wiele programów mogłoby się wysypać przy tym. To jak długie będą nazwy podkatalogów i ile ich będzie to już Twoja decyzja.
3. Do bazy ląduje jedynie relatywna ścieżka do pliku, tj.: dsa/dcz/nsd/sado32m2e12dsadsawqkje213.png oraz jakieś metadane. Ewentualnie możesz rozważyć przechowywanie rozszerzenia pliku w osobnej kolumnie, na wypadek gdybyś chciał uniknąć "duplikatów" o różnych rozszerzeniach (abcdef.png oraz abcdef.jpeg).
Go to the top of the page
+Quote Post
miej95
post
Post #12





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 9.03.2012

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


Kiedyś rozwiązałem to tak:
Każda "firma" miała swój uniqueId (przy dodawaniu firmy do bazy był on generowany) a po "_" był numer zdjęcia z kolei czy tam funkcja tego zdj, np. logo. wyglądało to mniej więcej tak: SDF23j423423_logo.jpg . Nie rób osobnych folderów bo będziesz miał kipisz na serwerze.

@UP. też myślę że zastosowanie aktualnego czasu jest dobrym rozwiązaniem
Go to the top of the page
+Quote Post
Crozin
post
Post #13





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Timestamp ma taka wadę, że w przypadku gdy dwie osoby robią coś w tym samym czasie jest on identyczny, nie unikalny.
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 - 08:32