#php #sql #sql-server #sql-server-2008
#php #sql #sql-сервер #sql-server-2008
Вопрос:
Я сохранил изображение в базе данных SQL, поле изображения типа данных varbinary (max) следующим образом.
$image = "baby.jpg";
$type = pathinfo($image, PATHINFO_EXTENSION);
$data = file_get_contents($image);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
$insert = "insert into logoType(image)values(?)";
$param = array($base64);
$sql = sqlsrv_query($dbhandle, $insert, $param ) or die( print_r(sqlsrv_errors()) );
Часть вставки выполнена успешно. Теперь, как я могу получить сохраненное изображение из базы данных и отобразить его на веб-странице с помощью php. Я попробовал следующий метод, но продолжал получать сообщение об ошибке: «Изображение не может быть отображено, поскольку оно содержит ошибки».
header('Content-Type: image/x-bmp');
echo $image;
Как изображение может отображаться на веб-странице с использованием php с данными, хранящимися в БД?. Пожалуйста, руководство. Заранее спасибо.
Ответ №1:
Вы преобразовали изображение в Base64 перед сохранением, поэтому вам следует преобразовать его обратно, а затем использовать echo
.
Ответ №2:
<?php
$serverName = "server";
$uid = "user";
$pwd = "pass";
$connectionInfo = array( "UID"=>$uid,
"PWD"=>$pwd,
"Database"=>"database");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ){
echo "Unable to connect.</br>";
die( print_r( sqlsrv_errors(), true));
}
$fotoquery = "SELECT column_image FROM Table WHERE Column = 'xxxxxxxxxx'";
$stmt = sqlsrv_query( $conn, $fotoquery);
if( $stmt === false ){
echo "Error in executing query.</br>";
die( print_r( sqlsrv_errors(), true));
}
$dataImage = sqlsrv_fetch_array($stmt);
$varimg = base64_encode($dataImage[0]);
$data = base64_decode($varimg);
$im = imagecreatefromstring($data);
if ($im !== false) {
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
}
else {
echo 'An error occurred.';
}
?>