FAQ |
Kalender |
2009-03-05, 17:40 | #1 | ||
|
|||
Flitig postare
|
Enligt min uppfattning borde det vara en dålig idé att spara bilder i t.ex. MySQL. Databasen borde bli ganska tung, relativt snabbt. Men jag är gärna intresserad av andras åsikter på detta.
Exempel kod på hur man kan göra om någon är intresserad: Kod:
//SKAPA PASSANDE TABELL CREATE TABLE `images` ( *`id` INT(11) NOT NULL AUTO_INCREMENT, *`image` BLOB NOT NULL, *PRIMARY KEY *(`id`) ) ENGINE=MyISAM; //TRE STEG FÖR ATT SPARA BILDER $image = chunk_split(base64_encode(file_get_contents("image.jpg"))); $query = "INSERT INTO images (image) VALUES('$image')"; mysql_query($query) or die(mysql_error()); echo "Image id is ".mysql_insert_id(); //VISA BILDER (SEPARAT FIL ex. visabild.php) header('Content-type: image/jpeg'); $query = "SELECT image from images where id=1"; $rs = mysql_fetch_array(mysql_query($query)); echo base64_decode($rs["image"]); //VISA BILD PÅ EN HTML SIDA <img src="visabild.php" /> Som jag kan se det är för och nackdelarna: Fördel: * Man behöver inte bry sig om chmod inställningar. * Enkelt att hålla ordning. * Enklare att behandla bilderna. * Bilderna är i säkert förvar, man kan ge personliga rättigheter åt bilderna. * Enkelt att flytta en hel sida (finns som nackdel också se nedan) Nackdel: * Slöare bildhantering * Resurskrävande * Databasen blir lätt stor * Vissa webbhotell ger begränsad storlek på databasen, alt. man får ställa in storleken när man skapar den. * Svårt att flytta databasen om den blir för stor, phpMyAdmin tillåter väll max typ 50 Mb export? Har ni fler pros and cons på ämnet? Tips? När är det en fördel att spara bilder i en databas? Vem gör såhär? |
||
Svara med citat |
2009-03-05, 18:23 | #2 | |||
|
||||
Mycket flitig postare
|
Detta har ju diskuterats fram och tillbaka i all evighet. Självfallet ska man begränsa användningen av databaser för att lagra stora volymer bilddata men vad det gäller mindre bilder är ju mindre självklart.
Jag sparar produktbilderna i en webbshop i databasen vilket fungerar utmärkt. Säkerligen finns det nackdelar med detta men för min del överväger det att produkter och bilder finns organiserade och ordnade tillsammans med produkterna. En databasdump ger mig hela backup:en. Du har nog i stort listat fördelarna och nackdelarna. För min del är det något man avgör från fall till fall. |
|||
Svara med citat |
2009-03-05, 19:29 | #3 | |||
|
||||
Klarade millennium-buggen
|
Hade ingen aning om att man kunde spara bilder i databas. Jag kör bara ASP och Access-databas och där kanske det inte funkar. Jag brukar bara spara filnamnet som text i databasen vilket jag antar är det vanligaste sättet även i PHP/mySQL, eller?
|
|||
Svara med citat |
2009-03-05, 20:09 | #4 | |||
|
||||
Mycket flitig postare
|
Citat:
1. Säkerhetsrisk om du inte escape:ar ordentligt. 2. Tar mer plats än att bara använda id för att hitta bilden. 3. Du får problem att hantera det om flera bilder har samma namn. Jag använder i sådana fall "bild34.jpg" där numret är det unika id:t till raden i databasen. Asp+Access är väl inte världens modernaste lösning, kommer ihåg att jag använde det runt millenieskifter… :P |
|||
Svara med citat |
2009-03-05, 23:49 | #5 | |||
|
||||
Klarade millennium-buggen
|
Citat:
|
|||
Svara med citat |
2009-03-06, 13:39 | #6 | |||
|
||||
Klarade millennium-buggen
|
Man kan tänka som följande: bilder ska lagras och då använder man det som är bäst för lagring: disk (alltså i filstrukturen). Databsernas trevligaste uppgift är att sortera och filtrera data, alltså något som inte har med binärfiler att göra. Så det borde vara bäst att inte lagra filer i databasen, MEN det kan finnas tillfället då det är bra; det beror på helt enkelt.
Själv ser jag nyttan av att lätt kunna lägga bildfiler på separata subdomäner där de dessutom servas snabbt av webservern via fil istället för att gå ner via en serversida (.net/php etc) och sedan göra anrop till databasen, samt flytta upp allt data genom alla lager fram till klienten. Om man inte har tungan rätt i mun så kan ju dessutom databasen få låsningar medans den gör insert/update på förhållandevis stora bildfiler. |
|||
Svara med citat |
2009-03-06, 14:10 | #7 | |||||
|
||||||
Har WN som tidsfördriv
|
Citat:
Citat:
Citat:
Citat:
Citat:
|
|||||
Svara med citat |
2009-03-06, 16:20 | #8 | ||
|
|||
Flitig postare
|
Citat:
Mina pros & cons är mest spontana tankar runt det hela. Vet ej om de är korrekta. Själv sparar jag inga bilder i databaser, men jag har läst en hel del om folk som gör det. |
||
Svara med citat |
2009-03-06, 23:17 | #9 | ||
|
|||
Medlem
|
Ger inga direkta för- och nackdelar, berättar bara hur jag gör, om det skulle vara till någon hjälp.
Jag sparar filstruktur/filnamn i databasen och själva filerna på hårddisk. Om man grupperar detta per användare och har en bra säkerhetskoll på filnamn så ser jag inga problem med detta. Id:n är att föredra om man inte har behov av att manuellt gå in och titta på filer och dess namn |
||
Svara med citat |
2009-03-06, 23:20 | #10 | ||
|
|||
Supermoderator
|
Den enda fördelen med att spara bilderna binärt är väl i de fall man har särskild anledning att skydda filerna. Annars är det nog smidigare i de flesta fall att köra på "vanligt" vis.
__________________
Full-stack developer, free for smaller assignments |
||
Svara med citat |
Svara |
|
|