sql >> Databasteknik >  >> RDS >> Mysql

Bilder i MySQL

Som sagt tidigare, blob är vägen att gå, men som SanHolo påpekar är det inte riktigt prestandamässigt och du kommer så småningom att stöta på problem eftersom din databas kan växa riktigt riktigt snabbt!

Varför indexerar du inte filnamnet på databasen och lagrar filen på servern ?

Det främsta skälet till att inte tillåta något sådant här skulle vara säkerhetsproblem. Om du verkligen försöker täcka dina baser genom att inte tillåta alla användare att se eller ta tag i innehåll har du två alternativ.

Alternativ A) ge filen ett unikt, icke identifierbart namn som Flickr gör. Namnet på filen omfattar två hash. En användar-hash och en fil-hash. Den andra hashen är hemlig och det enda sättet du kan få det skulle vara genom försök och misstag. Ta en titt på den här filen jag har på Flickr . Är användarskyddad (endast familjen kan se) men du kommer att kunna komma åt det bra eftersom webbadressen i sig fungerar som ett skydd:http://farm2.static.flickr.com/1399/862145282_bf83f25865_b.jpg , även om du slumpmässigt försökte generera hash och hittade en giltig sådan skulle den döljas av anonymitet eftersom du inte skulle veta vem den var från.

Alternativ B) använd en teknologi på serversidan för att begränsa åtkomsten. Denna metod är säkrare men dyrare för servern. Du kommer att ställa in ett skript som tillåter/vägrar åtkomst till filen baserat på session_permissions eller något liknande. Titta på följande kod som skulle anropas genom att komma åt något i stil med:

http://yourserver.com/getprotectedfile.php?filename=213333.jpeg

session_start();

// logic to verify the user is ok
if($_SESSION['user_access']!=true) {
    exit('user not allowed here');

// WATCHOUT! THIS IS NOT SECURE! EXAMPLE ONLY.
// on a production site you have to be sure that $filename will not point to a system file
$filename = $_GET['filename'];

// gets the file and outputs it to the user
header('Content-type: image/jpeg');
header('Content-Length: '.filesize($filename));
readfile($filename);


  1. Ta bort upprepade resultat från MySQL-fråga

  2. Hur man hämtar kalenderkvartal från ett datum i TSQL

  3. Hur INTE RLIKE fungerar i MariaDB

  4. MySql:Visa kolumner men exkludera allt utom fältnamnen