Подтвердить что ты не робот

Как я могу хранить и извлекать изображения из базы данных MySQL с помощью PHP?

Как я могу вставить изображение в MySQL, а затем получить его с помощью PHP?

У меня ограниченный опыт работы в любой области, и я мог бы использовать небольшой код, чтобы начать работу с этим.

4b9b3361

Ответ 1

Сначала вы создаете таблицу MySQL для хранения изображений, например, например:

create table testblob (
    image_id        tinyint(3)  not null default '0',
    image_type      varchar(25) not null default '',
    image           blob        not null,
    image_size      varchar(25) not null default '',
    image_ctgy      varchar(25) not null default '',
    image_name      varchar(50) not null default ''
);

Затем вы можете записать изображение в базу данных, например:

/***
 * All of the below MySQL_ commands can be easily
 * translated to MySQLi_ with the additions as commented
 ***/ 
$imgData = file_get_contents($filename);
$size = getimagesize($filename);
mysql_connect("localhost", "$username", "$password");
mysql_select_db ("$dbname");
// mysqli 
// $link = mysqli_connect("localhost", $username, $password,$dbname); 
$sql = sprintf("INSERT INTO testblob
    (image_type, image, image_size, image_name)
    VALUES
    ('%s', '%s', '%d', '%s')",
    /***
     * For all mysqli_ functions below, the syntax is:
     * mysqli_whartever($link, $functionContents); 
     ***/
    mysql_real_escape_string($size['mime']),
    mysql_real_escape_string($imgData),
    $size[3],
    mysql_real_escape_string($_FILES['userfile']['name'])
    );
mysql_query($sql);

Вы можете отобразить изображение из базы данных на веб-странице с помощью:

$link = mysql_connect("localhost", "username", "password");
mysql_select_db("testblob");
$sql = "SELECT image FROM testblob WHERE image_id=0";
$result = mysql_query("$sql");
header("Content-type: image/jpeg");
echo mysql_result($result, 0);
mysql_close($link);

Ответ 2

Вместо хранения изображений в базе данных хранят их в папке на вашем диске и сохраняют их местоположение в вашей базе данных.

Ответ 3

Помните, что обслуживание изображений из БД обычно намного, намного медленнее, чем обслуживание их с диска.

Вы начнете процесс PHP, открыв соединение с БД, имея данные чтения БД с одного и того же диска и ОЗУ для кеша, поскольку файловая система будет передавать его по нескольким сокетам и буферам, а затем выходить через PHP, что по умолчанию делает его не кэшируемым и добавляет накладные расходы на кодирование с кодировкой HTTP.

Современные веб-серверы OTOH могут обслуживать изображения с несколькими оптимизированными вызовами ядра (файл с отображением памяти и область памяти, переданная в стек TCP), так что они даже не копируют память, и почти нет накладных расходов.

Это разница между возможностью одновременного обслуживания 20 или 2000 изображений на одной машине.

Так что не делайте этого, если вам абсолютно не нужна целостность транзакций (и на самом деле даже это можно сделать только с помощью метаданных изображений в процедурах очистки базы данных и файловой системы) и знать, как улучшить обработку PHP HTTP подходит для изображений.

Ответ 5

Мое мнение заключается в том, что вместо хранения изображений непосредственно в базе данных рекомендуется хранить местоположение изображения в базе данных. Поскольку мы сравниваем оба варианта, сохранение изображений в базе данных безопасно для целей безопасности. Недостатком является

  • Если база данных повреждена, невозможно восстановить ее.

  • Извлечение файлов изображений из db происходит медленно, если сравнивать с другими параметрами.

С другой стороны, сохранение местоположения файла изображения в db будет иметь следующие преимущества.

  • Легко получить.

  • Если хранится более одного изображения, мы можем легко получить информацию об изображении.

Ответ 6

Лично я не буду хранить изображение в базе данных, Вместо этого поставьте его в папку, недоступную извне, и используйте базу данных для отслеживания ее местоположения. уменьшает размер базы данных, и вы можете просто включить его с помощью PHP. Без доступа PHP к этому образу не будет никакого пути, а затем