Задать вопрос
@mrRoss
-

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

Здравствуйте!
Может кто-то сталкивался с такой задачей:
в бд MSSQL есть поле с типом image(изображение). Можно ли с помощью php скрипта как-то получить эту картинку и в идеале сохранить в папку на сервере?
К серверу MSSQL подключаюсь с помощью ODBC драйвера.
($connection_string = "DRIVER={SQL Server};SERVER=$serverMSSQL;";
$connectionMSSQL = odbc_connect($connection_string,$userMSSQL,$passMSSQL);)
Заранее огромное спасибо за помощь! :)
  • Вопрос задан
  • 747 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 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
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽