sql >> Database teknologi >  >> RDS >> Mysql

Billeder i MySQL

Som sagt før, blob er vejen at gå, men som SanHolo påpeger, er det ikke rigtigt præstationsmæssigt, og du vil til sidst løbe ind i problemer, da din database kan vokse rigtigt hurtigt!

Hvorfor indekserer du ikke filnavnet på databasen og gemmer filen på serveren ?

Den primære grund til ikke at tillade noget som dette ville være sikkerhedsproblemer. Hvis du virkelig prøver at dække dine baser ved ikke at tillade alle brugere at se eller få fat i indhold, har du to muligheder.

Valgmulighed A) giv filen et unikt, ikke-identificerbart navn, som Flickr gør. Navnet på filen omfatter to hashes. En bruger-hash og en fil-hash. Den anden hash er hemmelig, og den eneste måde, du kan få den på, er ved at prøve og fejle. Tag et kig på denne fil, jeg har på Flickr . Er brugerbeskyttet (kun familien kan se), men du vil fint kunne få adgang til den, da URL'en i sig selv tjener som beskyttelse:http://farm2.static.flickr.com/1399/862145282_bf83f25865_b.jpg , selvom du tilfældigt forsøgte at generere hashes og fandt en gyldig en, ville den blive skjult af anonymitet, da du ikke ville vide, hvem den var fra.

Mulighed B) brug en teknologi på serversiden til at begrænse adgangen. Denne metode er sikrere, men dyrere for serveren. Du vil opsætte et script, der tillader/nægter adgang til filen baseret på session_permissions eller noget lignende. Se på følgende kode, der ville blive kaldt ved at få adgang til noget som:

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. Hvilken er den bedste PostgreSQL GUI? Sammenligning i 2021

  2. Indstil en offentlig standardprofil for databasemail (SSMS)

  3. Tips til at flytte SQL Server-database fra én server til en anden - SQL Tutorial af Rajan Singh

  4. SQL-forbindelse med offentlig IP, navngivet instans og portnummer