(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

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

Источник: activex

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

  1. загрузить jpg-файл в столбец типа image таблицы SQL Server
  2. выгрузить этот файл с сохранением на диске
  3. отобразить на web-странице изображение, взятое из базы данных
Для начала создадим базу данных в SQL Server - пусть она будет называться test. Далее необходимо создать таблицу в нашей базе данных - назовем ее blob. Для выполнения указанных действий можно воспользоваться инструментом SQL Server Enterprise Manager.
Ниже на скриншоте показана структура этой таблицы:

 Структура таблицы blob 

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>



ASP-скрипты можно взять здесь: aspblob.zip

Ссылки по теме

Файлы для загрузки


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 26.01.2010 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft 365 Apps for business (corporate)
Microsoft Office для дома и учебы 2019 (лицензия ESD)
Microsoft Windows Professional 10, Электронный ключ
Microsoft 365 Business Standard (corporate)
Microsoft 365 Business Basic (corporate)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Один день системного администратора
Мастерская программиста
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100