![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
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 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 134 Pomógł: 0 Dołączył: 29.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]()
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 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 134 Pomógł: 0 Dołączył: 29.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
A rob jak ci wygodnie Problem w tym że sam nie wiem jak jest mi bardziej wygodnie, jestem strasznie niezdecydowany hehe 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ę? |
|
|
![]()
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.... ![]() 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 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 134 Pomógł: 0 Dołączył: 29.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
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 ![]() Pozdr. |
|
|
![]()
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.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 58 Pomógł: 0 Dołączył: 5.03.2007 Skąd: Leszno 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. Żeby nie było duplikatów najlepiej jako nazwę pliku użyć znacznika czasu. 100 % gwarancji że się nie powtórzą. |
|
|
![]()
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). |
|
|
![]()
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 |
|
|
![]()
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.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 08:32 |