webForumDet fria alternativet

Skapa bildgalleri!

.NET

12 svar · 655 visningar · startad av m_soderlund

Medlem sedan sep. 20026 425 inlägg
Frågan#1

Jag ämnar att skapa ett bildgalleri.
Bildgalleriet ska ha flera olika kategorier, men inga tumnaglar. (thumbnails)
Till bilderna ska jag ha en beskrivning (plats där fotot är taget, fotograf, beskrivning m.m.).

Jag undrar hur du skulle bygga upp ett sådant bildgalleri?

- databasstyrt?
- lista bilder från mappar på servern enbart?

Tacksam för vägledning. :D

Medlem sedan maj 2001329 inlägg
#2

Jag skulle råda dig till att använda bara databas. Den främsta anledningen är att du får allt på ett ställe. Dvs både bilden och datan till bilden.

Jag försökte själv ett tag att använda streams för att kunna lägga datan på själva bilden. Streams är alltså föenklat strömmar som man lägger på en ström (dvs filen). Dock fungerar dessa bara i NTFS så om man kör backup på dem så förlorar man all data. Plus att jag kunde inte hitta hur man skapar dessa i .Net.

Nackdelen med att lägga bilderna i databasen är att man måste streama ut dem. Dock så upptäcker man snart att man måste göra detta från filsystemet också. Detta då man vill göra rättigheter på bilderna, med stream från en ej utdelad katalog kan man själv skapa dessa rättigheter istället för att förlita sig på antingen rättigheter i filsystemet tillsammans med imperonation av en person eller någon annan teknik.

Var lite kortfattat och rörigt som vanligt, men jag hoppas du får ut nått av at ;)

Medlem sedan sep. 20026 425 inlägg
#3

Okej, då lutar det åt databasstyrning. Finns det dock fler förslag där ute? :D

Medlem sedan mars 20025 907 inlägg
#4

Jag skulle spara sökvägen till bilden och infon om bilden i en databas och ha själva bilderna i mappar.
Gör det något om besökare kan accessa bilden direkt? (dvs genom att skriva in den sökvägen till bilden direkt i browsern.) Om det inte gör något så skulle du slippa all streamning av bilderna (du skriver bara ut en img-tagg med bildens url (från databasen) istället).
Även om du vill kunna behörighetsskydda bilderna skulle jag lägga dem i mappar (lämpligen utanför wwwrooten då), och sen streama dem därifrån.

Medlem sedan sep. 20026 425 inlägg
#5

Utmärkt Peeer! Det var så jag tänkte från början, men då funderade jag på ifall om det inte fanns något/några andra alternativ som var bättre. Tack! :bire

Medlem sedan juni 20001 257 inlägg
#6

Du kan kolla på det här, http://www.ngallery.org, så kanske du får några idéer. Open Source.

Medlem sedan dec. 19995 874 inlägg
#7

Har du inte mycket trafik mellan databasservern och webbservern kan du ju alltid lägga bilderna i databasen. Om du däremot redan har mycket trafik eller vet med dig att det kan komma så tycker jag att du skall lägga det på webbservern. Generellt tycker jag att det skall ligga på webbservern. Iofs om du får flera webbservrar så blir det dubletter såvida du inte har en egen bildserver, men det är kanske utanför din fråga.
Jag tycker däremot att du sparar all information om bilden i databasen. Bildens namn bör inte ha det namnet den har när man laddar upp, utan istället kanske en guid. Du sparar även filändelse i din databas. Om du har olika folderID/categoryID eller liknande för varje fil så slipper du egentligen att skriva in sökväg till filen, det räcker med att utgå från en mall för din site, exempelvis.. https://www.site.com/images/categoryID/guid.ext
Guiden gör det rätt svår att gissa bildnamn. categoryID skulle också kunna vara en guid.

Medlem sedan sep. 20026 425 inlägg
#8

Intressant Brimba! Det där ska jag försöka ta i beaktande när jag börjar min utveckling. :)
För tillfället kan jag dock inte skriva till databaser m.m. på min server.. :l (rättigheter igen.. :x)

Medlem sedan maj 20012 812 inlägg
#9

Det finns fördelar och nackdelar med att lägga bilderna i databasen. Den största nackdelen är givetviss prestandan, eftersom du måste gör en koppling till databasen, hämta bilden och sedan streama ut den till din sida.

Detta tar mer prestanda än att bara lägga bilden som en fil och spara bilden i en mapp. Det finns i och med ASP.NET ett utmärkt cache objekt som skulle kunna öka prestandan markat, genom att du hämtar och lagra bilden i cachen, och nästa gång du behöver visa bilden så finns den redan i cachen och kommer att gå minst lika snabbt som att ha den som en vanlig fil.

Det kräver givetviss att man har mycket Internminne eftersom man kommer att cacha alla bilder som använts 1 gång.

- M

Medlem sedan juni 20011 732 inlägg
#10

Det finns fördelar och nackdelar med att lägga bilderna i databasen. Den största nackdelen är givetviss prestandan, eftersom du måste gör en koppling till databasen, hämta bilden och sedan streama ut den till din sida.

Jupp... och det kräver i princip att du använder sql-server som du ska använda dig av BLOBs (Binary Large OBjects, alltså binärkoden för filerna du sparar i din db), åtminstone inte access det är bara att glömma. Men visst är det en snygg lösning på många sätt också...

Själv gjorde jag ett litet galleri (så att morsan skulle kunde se bilder på min lilla grabb) genom att spegla kataloger och filer i speciell bildkatalog jag skapade för ändamålet. liknande "utforskaren" alltså. Alla kataloger listade jag i en repeater och thumbs i en annan (fanns inga thumbs för några bilder så skapade jag dem). Eftersom det var ett fåtal på förhand bestämda personer som hade intresse i galleriet å skapade jag en windowsanvändare med rättighet att se bilderna i just dessa kataloger som de fick logga in med.

I mitt fall hade jag alltså ingen db alls, men det måste du nog ha om du vill koppla data på bilderna. Jag vet att "Grynet" har försökt hämta metadata direkt från filer (exempelvis från de fält som finns under properties/summary på en fil) men om man får tro honom så är det inte möjligt av någon anledning. Någon som kan bevisa motsatsen? :)

Nu vet jag ju inte riktigt vad du ska ha ditt galleri till och vilken målgruppen är, men det finns så många olika lösningar och vilken som passar dig bäst beror naturligtvis på hur och av vem ditt galleri ska användas!

Medlem sedan sep. 20026 425 inlägg
#11

Ah, vilka uttömmande och bra svar!
Galleriet ska finnas fritt tillgängligt på Internet, för alla som besöker min sajt.

Medlem sedan nov. 200013 890 inlägg
#12

Jag har precis byggt om mitt galleri (https://www.tor.nu/galleri) och jag använder databas för bilddatan och mappar för bilderna.

Databasen ser ut så här:

Folder (Anger bildkategori)
Image (Bildens namn)
Date (Datum då bilden är tagen)
Comments (Kommentarer till bilden)

Sedan plockar jag ut året ifrån datumet och skapar en <select>
för varje år. Bildkategorierna (Folder) blir sedan <option>:s i respektive lista.

Det är visserligen byggt i PHP men tankarna är dom samma...

Medlem sedan jan. 20012 204 inlägg
#13

Har ett som jag byggde i .net för ett tag sen. Sparade sökväg i databas och ladda upp filen etc. Hör av dig så skickar jag källkod...

269 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)