Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
VIT46
0 / 0 / 0
Регистрация: 06.11.2008
Сообщений: 92
1

Файл или Binary из базы

25.12.2008, 17:26. Просмотров 1452. Ответов 16
Метки нет (Все метки)

Здравствуйте!!!

Не знаю, как получить файл из поля базы данных. Там есть картинка JPEG.
Надо достать её оттуда и передать на растерзание некому элементу управления IMG-X, который может принять двоичный массив (его и надо получить в любом виде)

Вместо двоичного массива я использовал объект Stream, и это работает:

Dim objStream
Set objStream = Server.CreateObject('ADODB.Stream')
objStream.Type = adTypeBinary
objStream.Open

objStream.LoadFromFile 'C: est.jpg' 'Для пробы загружаем из файла, а надо бы из базы!

ImgX.Import.FromMemoryFile objStream.Read, ixmfJPG ' Загружаем в ImgX поток с картинкой

'Ресайз и качество:
imgX.effects.resize 150 ' width
ImgX.Settings.JPGQuality = 50
'Смотрим, что получилось:
Response.ContentType = 'image/jpeg'
Response.BinaryWrite ImgX.Export.ToMemoryFileVariant(1) ' JPEG

А как получить objStream не из файла, а из поля базы данных?
Ведь ADODB.Stream всё таки родня ADODB.Recordset'у !!!

Помогите пожалуйста, кто победил этот Stream или просто знает, как бороться с двоичными данными!!!

Очень надо получить байтовый массив!!!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2008, 17:26
Ответы с готовыми решениями:

Нужно получить Binary из базы
Проблема такая есть в базе данных поле содержащие бинарный код файла гиф, соответственно при...

"_10.binary.binary()" должен объявлять тело, т.к. он не помечен модификатором abstract, extern, или partial
Подскажите, что это за ошибка: "_10.binary.binary()" должен объявлять тело, т.к. он не помечен...

Из базы данных в excel файл или в текстовый файл
Здравствуйте. Есть у кого-нибудь код как записать таблицу из базы данных(mysql) в exel файл или...

Ошибка Файл не может быть открыт ядром базы данных microsoft jet. Файл уже открыт другим пользователем для монопольного доступа или
После написания программы, записал исходник на диск. При запуске экзешника с диска появляется такая...

Дозапись в binary mat файл
Привет, заранее прошу прощение, если тема создана не там. Идея такова. Имеются постоянно...

16
kerg
0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 20
25.12.2008, 17:31 2
надо использовать loadblop или создать файл в другом файле а затем его IMG
0
VIT46
0 / 0 / 0
Регистрация: 06.11.2008
Сообщений: 92
25.12.2008, 17:42  [ТС] 3
А можно поподробнее,кто такой loadblop?
И , кстати, как получить файл из базы данных я не знаю. Если бы знал, так никакой проблемы думаю не было бы :-((
Например, я зааплоадил файл в базу, а Download сделать не знаю как. Байтовый массив всё равно нужон. Или что-то с objStream мутить. Что - не знаю. HELP!!!
0
Gastello
29.12.2008, 15:57 4
Посмотри http://support.dundas.com/?Article=660
Но храненить в БД картинки мне кажется пошло, не проще ли хранить путь к картинке !!!
29.12.2008, 15:57
VIT46
0 / 0 / 0
Регистрация: 06.11.2008
Сообщений: 92
30.12.2008, 13:06  [ТС] 5
Огромное спасибо. Задачку я решил. Но статейку всё равно посмотрю.
А хранить картинки в базе очень удобно. Я откажусь от этого, только если будут серьезные аргументы против. Но, если есть возможность хранить файлы в поле БД, то почему бы не использовать эту возможность на все 100?
Все доводы о том, что при этом падает быстродействие и значительно увеличивается нагрузка на сервер никто ещё не обосновал. А раз придумали поле BLOB, значит его надо использовать.
И это не только не пошло, а вообще COOLьно!!!
Да здравствует Микрософт, тов. Гейтс и Relib.com!!!
0
Gastello
30.12.2008, 13:50 6
Реляционные базы нужны для хранения связанных данных которые можно удобно упорядочить в таблицы.
Картинки не являются такими данными. Картинки это просто БЛОБ поля, которые можно с таким-же успехом хранить в файлах и нагрузка от этого только уменьшится.

Это не мои слова, а слова человека, который занимается web программингом и не только, далеко не один год.
t1k
3 / 3 / 5
Регистрация: 10.05.2007
Сообщений: 1,617
30.12.2008, 15:44 7
http://relib.com/forums/topic.asp?pg=100&id=750398
0
aaf
0 / 0 / 0
Регистрация: 26.12.2007
Сообщений: 435
31.12.2008, 06:20 8
во времена гигагерцовых процов какая фиг разница где хранятся файлы...
Хотя я сам за хранение файлов на диске в виде файлов. Ведь именно для этого сделана файловая система!
0
Andir
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 145
31.12.2008, 09:38 9
Привет !

Самое смешное, что по идее файловая система это и есть база данных. И следующая версия SQL server это прочно установит.
Хотя я лично за то чтобы данные хранились в одном месте, а обрабатывались в другомю

С Уважением Andir!
0
Gastello
31.12.2008, 14:28 10
а если картинки хранятся в базе и мне надо сделать галерею, что бы по 20 картинок на страницу выводило, нужно делать так:
<img scr=show_pic.asp?id=1>
<img scr=show_pic.asp?id=2>
.
.
<img scr=show_pic.asp?id=20>

а это в свою очередь 20!! запросов к базе, а не один если бы картинки были файлами.
Или есть нормальный способ решить эту проблему?
Я хоть и не сторонник хранить картинки в базе, но для повышения эрудиции пригодится.
Gastello
31.12.2008, 14:36 11
еще мнения:
http://phpclub.net/talk/showthread.php?s=&threadid=25182&rand=9
t1k
3 / 3 / 5
Регистрация: 10.05.2007
Сообщений: 1,617
31.12.2008, 14:46 12
тут надо тестировать чтобы точно убедиться

хотя на первый взгляд кажется, что доступ к БД медленнее доступа к FS, но это может оказаться и не так

по поводу 20 запросов к базе, еще неизвестно, что будет быстрее двадцать запросов к БД или 20 запросов к FS. Например вся БД может быть в оперативной памяти. Конечно, файлы тоже можно кэшировать.

Вобщем тут нет однозначного ответа, надо исходить из конкретного приложения.
0
Gastello
31.12.2008, 15:05 13
Ладно, постараюсь больше не писать о вещах в которых мало разбираюсь.
aaf
0 / 0 / 0
Регистрация: 26.12.2007
Сообщений: 435
01.01.2009, 05:46 14
>>>а это в свою очередь 20!! запросов к базе, а не один если бы картинки были файлами.

А кто мешает организовать один запрос к БД?
0
Gastello
01.01.2009, 09:59 15
to aaf.
каким образом? идею в студию.

to t1k.

неужто варинт <img src='www.yoursite.com/img.jpg'>
может быть медленнее чем <img src=show_pic.asp?id=1>.
ведь во втором варианте нужно сначала интерпретировать скрипт, потом законектится к бд и выдать картинку
t1k
3 / 3 / 5
Регистрация: 10.05.2007
Сообщений: 1,617
01.01.2009, 10:15 16
Тут, конечно, надо проверять непосредственно, но могу дать правдоподобное объяснение.

Да, скрипт, надо проинтерпретировать, но скрипт, если это не первый запрос к image.asp находится уже в памяти, а работа в памяти значительно быстрее обращения к диску, в случае доступа к файлу. Плюс, если говорить, только о хранении файла в БД, может использоваться не .asp, а .aspx или вообще .dll, т.е. время на интерпретацию не тратится. Далее, сам файл в БД может тоже находится в памяти, а, опять таки, работа с памятью гораздо быстрее, вплоть до нескольких порядков, чем обращение к диску. Впрочем, файл тоже может кэшироваться в памяти, так что здесь не все однозначно.

Что касается 20 запросов в один, можно применить такой прием в порядке бреда. При первом запросе в сессию помещаются, остальные 19 файлов. А при дальнейших обращениях они берутся не из БД, а из сессии.
0
Gastello
01.01.2009, 20:20 17
Спасибо t1k за подробные разъяснения.
Но все равно картинки буду в файлах держать - привычка, еще с PHP.
01.01.2009, 20:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.01.2009, 20:20

Binary Search Trees или Двоичные деревья поиска
При наборе фразы в Google и Яндексе уже при наборе первого слова или буквы нам предлагается...

Double to binary или как узнать сколько бит в числе?
Нужно узнать сколько бит в числе, оно может быть любым:1-целое положительное(напр 3),2-целое...

Где найти описание алгоритма по которому VB пакует UDT- структуры для записи в Binary- файл?
Не подскажете ли, где найти описание алгоритма по которому VB пакует UDT- структуры для записи в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru