Как я могу восстановить или получить доступ к полю больших двоичных объектов MySQL, чтобы я мог предварительно просмотреть его как HTML с помощью кодов PHP? Есть ли доступная функция в PHP, чтобы я мог сохранить это поле blob в формате jpeg.
2 ответа
Хранить легко. Предполагая, что у вас есть таблица mysql с полем BLOB для изображений ....
После загрузки изображения вы получаете содержимое файла в память, а затем вставляете его в поле большого двоичного объекта.
<?php
$file = '/tmp/MyImg.jpg';
// you migh want to escape it just in case
$data = file_get_contents($file);
// Insert into database
$sql = "INSERT INTO my_picture_table (`picture_blob_field`) VALUES ('$data');"
?>
Получение также довольно просто. Проще сделать отдельный файл для загрузки изображений из blob.
<?php
// file = getPicture.php
$id = (int) $_GET['id'];
$sql = "SELECT `picture_blob_field` FROM `my_picture_table` WHERE `id` = $id"
// query the db
// store data into var $picData
// Set the content type and print the data.
header("Content-type: img/jpeg");
echo $picData;
?>
Это все, что вам нужно сделать ... Теперь на странице HTML просто создайте
<img scr="getPicture.php?id=PICTURE_ID alt="blah blah" />
Обратите внимание, что приведенный выше пример относится к типу JPEG, сохраните тип файла в базе данных, а затем используйте его, чтобы указать тип файла с помощью header("Content-type: img/xxx")
Надеюсь, это решило вашу проблему.
Я нашел пример / руководство по хранению изображений в mysql. Если выше не ясно, просмотрите код (он разбит на страницы, поэтому посмотрите на другие страницы)
Представленный выше код уязвим для атак с использованием SQL-инъекций и в любом случае выйдет из строя на первом байте JPEG, который соответствует коду ASCII для знака кавычек (что должно произойти довольно быстро). Я действительно вижу ваш комментарий о том, что вы «можете» захотеть избежать данных, но следует подчеркнуть, что в большом двоичном файле почти наверняка будет байт, который соответствует кавычкам. Это не «на всякий случай», это практически каждый случай.
Используйте mysql_real_escape_string () для данных JPEG и параметра id (который исходит от пользователя, который может быть вредоносным). А еще лучше использовать PDO и подстановку параметров, чтобы избежать этого беспорядка.
Кроме того, тип содержимого должен быть image / jpeg, а не img / jpeg.
Похожие вопросы
Новые вопросы
php
PHP — это открытый, мультипарадигмальный, динамически типизированный и интерпретируемый язык сценариев, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.