@mrRoss
-

PHP и тип image MSSQL. Как получить картинку?

Здравствуйте!
Может кто-то сталкивался с такой задачей:
в бд MSSQL есть поле с типом image(изображение). Можно ли с помощью php скрипта как-то получить эту картинку и в идеале сохранить в папку на сервере?
К серверу MSSQL подключаюсь с помощью ODBC драйвера.
($connection_string = "DRIVER={SQL Server};SERVER=$serverMSSQL;";
$connectionMSSQL = odbc_connect($connection_string,$userMSSQL,$passMSSQL);)
Заранее огромное спасибо за помощь! :)
  • Вопрос задан
  • 703 просмотра
Пригласить эксперта
Ответы на вопрос 3
viphorizon
@viphorizon
Я Когда то тоже задавал подобный вопрос, но про PostgreSQL. Не задавайте здесь таких вопросов, никто не ответит, так как вряд ли попадётся человек, который хорошо знает другие системы управления базами данных не MySQL(MariaDB)
Ответ написан
Stalker_RED
@Stalker_RED
Насколько я понимаю, тип image в mssql это по сути просто binary blob. К тому-же он уже deprecated.

Скорее всего в базе бинарник картинки, иногда еще кодируют в base64.
Выведите первый килобайт как текст, посмотрите заголовки.
Ответ написан
Комментировать
mahoho
@mahoho
Full stack certified PHP developer.
Вообще это плохая тема - хранить картинки в бд - во-первых, это очень накладно по месту + результаты фетча получаются неподъемные, и, как заметил Stalker_RED, это поле имеет статус Deprecated. Но, раз уж так получилось, то пишите картинку в файл в binary-safe режиме, а затем возьмите ее mime type:
$imageFile = fopen('image', 'wb');
fwrite($imageFile, $fetchedImageFromDb);
fclose($imageFile);

$mimeType = exif_imagetype('image');
switch ($mimeType){
	case IMAGETYPE_GIF:{
		rename('image', 'image.gif');
		break;
	}
	case IMAGETYPE_BMP:{
		rename('image', 'image.bmp');
		break;
	}
	case IMAGETYPE_JPEG:{
		rename('image', 'image.jpeg');
		break;
	}
	case IMAGETYPE_PNG:{
		rename('image', 'image.png');
		break;
	}
	default:{
		throw new Exception('Unhandled image type');
	}
}

остальные возможные типы можно посмотреть в документации к exif_imagetype(): php.net/manual/ru/function.exif-imagetype.php
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽