View Single Post
Sitat av Pjukern Vis innlegg
Dyret, hva mente du med dette?

Tanken min var filnavnet i databasen skal stemme med filnavnet på disk.
Vis hele sitatet...
Sitat av Hager Vis innlegg
Dette gjøres fordi at da får alle bildefiler random genererte navn på disk og ikke kan "kræsje" med hverandre.
Vis hele sitatet...
Riktig. Det fysiske bilde på serveren bør være frikoblet fra navnet, i tilfelle brukere laster opp egne bilder. Det blir fort litt gammelt om de må komme på unike navn hver eneste gang, og etterhvert ganske mange "asdfsf.jpg". Spesielt ille blir det med bilder som følger systematiske navn som "DSCN0001.jpg" eller "Image001.jpg" (eller når en tosk laster opp "æøå.jpg" med UTF7). Alternativene da er å enten lage en mappestruktur, legge til noe tilfeldig i navnet ved hver kollisjon (inntil ingen kollisjoner skjer), eller rett og slett gi opp å bruke navn. God praksis her er å ta en hash av bildedataene, rename bildet til det, og så la interne referanser til bildene peke til det nye navnet. Dette kommer som sagt veldig an på bruksområdene, men jeg så for meg noe sånt:

bildeDB: id, referansenavn, bildeinformasjon, filnavn-på-disk
albumDB: id, albumnavn, bilde-id'er-i-albumet

Da har du mange muligheter åpne for opplastere. Du kan velge å la brukere som legger ut bilder referere til navn/id i sin markup, og så omskriver du linkene til de "stygge" navnene (img src="img/3819fbda69ca26d89e07fe06266e8e228d72c2da.jpg). Et annet alternativ er å ha et script av typen "(...)/bilde.php?id=id" og "(...)/bilde.php?ref=referansenavn" som finner filnavnet internt og presenterer dataene. Med sistnevnte kan du også omskrive alle forespørsler av typen images/*.jpg til å gå innom det scriptet med mod_rewrite. Mye å velge i, altså, men med et stadig økende antall livsfarlige feller å gå i (SQLi, Remote/Local File Inclusion, etc.)

Det viktigste er uansett at det er smertefritt for en bruker å laste opp, finne, og til slutt linke til korrekt bilde. Hvis det er tenkt at enkeltbilder kan deles utenfor siden din, så er det også en fordel at URIen ikke er lang som et uår.