Mysql
 sql >> база данни >  >> RDS >> Mysql

Изображения в MySQL

Както казахме по-горе, blob Това е начинът, обаче, тъй като SanHolo посочва, че това не е много по отношение на производителността и в крайна сметка ще срещнете проблеми, тъй като вашата база данни може да расте наистина много бързо!

Защо не индексирате името на файла в базата данни и не съхраните файла на сървъра ?

Основната причина да не се допуска нещо подобно би било проблеми със сигурността. Ако наистина се опитвате да покриете базите си, като не позволявате на всички потребители да виждат или грабват съдържание, имате две възможности.

Опция А) дайте на файла уникално, неидентифицирано име, както прави Flickr. Името на файла обхваща два хеша. Потребителски хеш и файлов хеш. Вторият хеш е секретен и единственият начин да го получите е чрез проба и грешка. Разгледайте този файл, който имам във Flickr . Защитен е от потребителя (само семейството може да види), но ще имате достъп до него добре, тъй като самият URL адрес служи като защита:http://farm2.static.flickr.com/1399/862145282_bf83f25865_b.jpg , дори ако се опитвате произволно да генерирате хешове и сте намерили валиден такъв, той ще бъде скрит от анонимност, тъй като няма да знаете от кого е.

Опция Б) използвайте технологията от страна на сървъра, за да ограничите достъпа. Този метод е по-безопасен, но по-скъп за сървъра. Ще настроите скрипт, който ще разрешава/отказва достъп до файла въз основа на session_permissions или нещо подобно. Вижте следния код, който ще бъде извикан чрез достъп до нещо като:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. NodeJS отговори, че часовата зона на MySQL е различна, когато извличам директно от MySQL

  2. Как мога лесно да конвертирам приложение на Django от mySQL в PostgreSQL?

  3. Производителност на MySQL:Как да използваме индексирането на базата данни на MySQL

  4. Как работи функцията FROM_BASE64() в MySQL

  5. Как да намеря n-ти ранг в MySQL?