Работа с двоичными данными SQL Server ASP

Работа с двоичными данными (SQL Server + ASP)

Христофоров Юрий

В статье будет рассказано как можно работать с двоичными данными в SQL Server с помощью связки ASP + ADO. Поставим перед собой три задачи:

Загрузить jpg-файл в столбец типа image таблицы SQL Server

Выгрузить этот файл с сохранением на диске

Отобразить на web-странице изображение, взятое из базы данных

Для начала создадим базу данных в SQL Server – пусть она будет называться test. Далее необходимо создать таблицу в нашей базе данных – назовем ее blob. Для выполнения указанных действий можно воспользоваться инструментом SQL Server Enterprise Manager.

Ниже на скриншоте показана структура этой таблицы:

Blob_id – первичный ключ таблицы (поле типа IDENTITY)

Теперь можно приступать к разработке ASP-скрипта для загрузки тестового файла test. jpg в созданную таблицу.

Начиная с версии ADO 2.5 и выше в ADO появился объект ADODB. Stream. Он отлично подходит для работы с двоичными данными. Его мы и будем использовать.

Файл import. asp

<%@ Language=VBScript %>

<%

Option explicit

Response. Buffer = True

Response. Expires = 0

Server. ScriptTimeout = 600

Dim cn, rs, objStream, sSQL

Set cn = Server. CreateObject(“ADODB. Connection”)

Set rs = Server. CreateObject(“ADODB. Recordset”)

Set objStream = Server. CreateObject(“ADODB. Stream”)

Cn. Open “Provider=SQLOLEDB.1;Initial Catalog=test;Data Source=localhost;UID=yura;PWD=yura;”

SSQL = “SELECT * FROM blob WHERE blob_id=0”

Rs. Open sSQL, cn, 1, 3

Rs. AddNew

ObjStream. Type = 1

ObjStream. Open

‘ путькфайлудлязагрузки

ObjStream. LoadFromFile(Server. MapPath(“./”) &; “\test. jpg” )

Rs. Fields(“name”).Value = “Тестовая картинка”

Rs. Fields(“blob_file”).Value = objStream. Read

Rs. Update

Rs. Close

ObjStream. Close

Cn. Close

Set rs = Nothing

Set objStream = Nothing

Set cn = Nothing

%>

<html>

<head>

<body>

<center>

<b>Файлуспешнозагружен!</b>

</center>

</body>

</head>

</html>

Теперь напишем скрипт для экспорта двоичных данных из базы данных в jpg файл.

Файл export. asp

<%@ Language=VBScript %>

<%

Option explicit

Response. Buffer = True

Response. Expires = 0

Server. ScriptTimeout = 600

Dim cn, rs, objStream, sSQL

Set cn = Server. CreateObject(“ADODB. Connection”)

Set rs = Server. CreateObject(“ADODB. Recordset”)

Set objStream = Server. CreateObject(“ADODB. Stream”)

Cn. Open “Provider=SQLOLEDB.1;Initial Catalog=test;Data Source=localhost;UID=yura;PWD=yura;”

‘ запрос однозначно получающий запись из таблицы

‘ в данном случае для примера blob_id = 1

‘ в Вашем случае это может быть другое число

SSQL = “SELECT * FROM blob WHERE blob_id=1”

Rs. Open sSQL, cn, 1, 3

ObjStream. Type = 1

ObjStream. Open

ObjStream. Write rs. Fields(“blob_file”).Value

‘ папка, где сохраняется файл, должна иметь NTFS права на чтение/запись для

‘ интернет-пользователя (обычно IUSR_<имя_компьютера>)

‘ в данном случае – это текущая папка

ObjStream. SaveToFile Server. MapPath(“./”) &; “\test_from_db. jpg”, 2

Rs. Close

ObjStream. Close

Cn. Close

Set rs = Nothing

Set objStream = Nothing

Set cn = Nothing

%>

<html>

<head>

<body>

<center>

<b>Файл успешно сохранен из базы данных!</b>

</center>

</body>

</head>

</html>

Теперь напишем скрипт для получения изображения из базы данных и непосредственного отображения на web-странице.

Файл img. asp

<%@ Language=VBScript %>

<%

Option explicit

Response. Buffer = True

Response. Expires = 0

Server. ScriptTimeout = 600

Response. ContentType = “image/jpeg”

Dim cn, rs, sSQL, binStream

Set cn = Server. CreateObject(“ADODB. Connection”)

Set rs = Server. CreateObject(“ADODB. Recordset”)

Cn. Open “Provider=SQLOLEDB.1;Initial Catalog=test;Data Source=localhost;UID=yura;PWD=yura;”

‘ запрос однозначно получающий запись из таблицы

‘ в данном случае для примера blob_id = 1

‘ в Вашем случае это может быть другое число

SSQL = “SELECT * FROM blob WHERE blob_id=1”

Rs. Open sSQL, cn, 1, 3

BinStream = rs. Fields(“blob_file”).Value

Rs. Close

Cn. Close

Set rs = Nothing

Set cn = Nothing

Response. BinaryWrite binStream

%>

ASP-скрипт img. asp можно указать в атрибуте src тега img:

Файл img_test. asp

<%@ Language=VBScript %>

<html>

<head>

</head>

<body>

<center>

<img border=0 src=”img. asp”>

</center>

</body>

</html>


1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (No Ratings Yet)
Loading...

Зараз ви читаєте: Работа с двоичными данными SQL Server ASP