|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Че-та поиском не нашел. Можно как-то откастовать блоб, чтобы получить на клиента несколько первых байтов? ================= Док. Win10 Ultim x64/Deb 10 amd64/Darwin Cocoa: FB 3.0.7.33374, Lazarus 2.3.0(trunk); FPC 3.3.1(trunk) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 17:04 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
в октет и сабстрингом Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 17:07 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Док, Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 17:08 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
кстати, а БЛОБ-то какой? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 17:08 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Мимопроходящий, Да, правильнее AS VARCHAR(3) CHARACTER SET OCTETS, но хз как там клиент (умеет ли) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 17:10 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Мимопроходящий кстати, а БЛОБ-то какой? ты, как всегда, краток :) Да, забыл указать, блоб бинарный Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 17:16 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
YuRock Да, правильнее AS VARCHAR(3) CHARACTER SET OCTETS, но хз как там клиент (умеет ли) Код: sql 1. 2. 3. 4.
Спасибо, все робит :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 17:35 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Док Спасибо, все робит :) Тут похоже на определение типа картинки/документа, дак я-бы лучше это делал в отдельное поле и перед отправкой файла. Да еще и на клиенте, там возможностей поболе будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 17:38 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
wadman Док Спасибо, все робит :) Тут похоже на определение типа картинки/документа, дак я-бы лучше это делал в отдельное поле и перед отправкой файла. Да еще и на клиенте, там возможностей поболе будет. все верно, только с той разницей, что хранение расширения и способ загрузки картинки в визуальные компоненты уже реализованы. Вот только пока не определился, где дешевле по трудозатратам: анализировать по расширению или по байтам (последний вариант мне кажется изящнее :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 18:02 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
анализируй перед загрузкой БЛОБ-а в базу. на клиенте. и добавь в таблицу поле - идентификатор (тип) выявленной сигнатуры. по-хорошему, ещё конечно надо бы создать доп.таблицу - справочник типов. но это не обязательно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 18:16 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Мимопроходящийи добавь в таблицу поле - идентификатор (тип) выявленной сигнатуры. В зависимости от назначения этот идентификатор может быть имя класса-обработчика данного изображения или MIME-название для скармливания системе/браузеру/и т.д. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 18:35 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Док YuRock Да, правильнее AS VARCHAR(3) CHARACTER SET OCTETS, но хз как там клиент (умеет ли) Код: sql 1. 2. 3. 4.
Спасибо, все робит :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 20:53 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Не все типы картинок имеют однозначную сигнатуру, например, bmp не имеет. Поэтому обычно вьюеры ориентируются на параллельно с файлом приходящий content-type , например, image/jpeg , или в крайнем случае на расширение. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 21:10 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
shalamyansky Не все типы картинок имеют однозначную сигнатуру, например, bmp не имеет. Из Вики: BITMAPFILEHEADER — 14-байтная структура, которая располагается в самом начале файла. 00 2 bfType WORD Отметка для отличия формата от других (сигнатура формата). Может содержать единственное значение 4D42/424D (little-endian/big-endian). ... 4D42/424D - это буквы MB или BM в ANSI кодировке. Ради любопытства глянул пару картинок BMP - везде есть буквы BM. Хотя, всякое бывает... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 21:33 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
d7i shalamyansky Не все типы картинок имеют однозначную сигнатуру, например, bmp не имеет. Из Вики: BITMAPFILEHEADER — 14-байтная структура, которая располагается в самом начале файла. 00 2 bfType WORD Отметка для отличия формата от других (сигнатура формата). Может содержать единственное значение 4D42/424D (little-endian/big-endian). ... 4D42/424D - это буквы MB или BM в ANSI кодировке. Ради любопытства глянул пару картинок BMP - везде есть буквы BM. Хотя, всякое бывает...У меня с bmp, gif, jpeg, png не было проблем никогда при загрузке (определении типа картинки) по мервым байтам. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 21:48 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
YuRock У меня с bmp, gif, jpeg, png не было проблем никогда при загрузке (определении типа картинки) по мервым байтам. Да, эти форматы имеют адекватные заголовки с определенной сигнатурой (флагом). Так что "флаг в руки"... :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 23:23 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Мимопроходящий анализируй перед загрузкой БЛОБ-а в базу. на клиенте. хорошая мысль. Особенно, если картинке до этого намеренно изменили расширение. В наст. момент в базу кладется расширение, указанное в имени файла. Мне подумалось, что поле с расширением файла можно будет похерить, если достаточно будет проанализировать первые 3-4 байта блоба shalamyansky Не все типы картинок имеют однозначную сигнатуру, например, bmp не имеет. а вики говорит, что это не так 0x4d42/0x424d YuRock У меня с bmp, gif, jpeg, png не было проблем никогда при загрузке (определении типа картинки) по мервым байтам. в Лазаре по дефолту у TOpenPictureDialog проперть Filter выглядит примерно так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Тут поневоле задумаешься, а сколько форматов будет достаточно для кроссплаформы? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 23:41 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Док> если картинке до этого намеренно изменили расширение. Расширение вообще не имеет значения. Его может не быть или быть "неправильным". Файл 'зелёный.крокодил' может быть BMP, JPG, TXT, EXE или файлом базы данных. > В наст. момент в базу кладется расширение, указанное в имени файла. > Мне подумалось, что поле с расширением файла можно будет похерить, Не можно, а нужно. Я в своё время делал примерно, как МП описал - был перечень "поддерживаемых форматов", один из которых "выбирался" на клиенте. В БД ничего не анализировалось, только хранилось. > Тут поневоле задумаешься, а сколько форматов > будет достаточно для кроссплаформы? :) Это решать тебе (исходя из логики ПО), а не кросс-платформе. :) IIRC, мне в своё время для графики хватило BMP/PNG/JPG, хотя по идее какой-нибудь TIFF не помешал бы для многостраничности. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 10:01 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Расширение вообще не имеет значения. Его может не быть или быть "неправильным". Этим много кто страдает, когда вместо "нормального" расширения приходит webp (или как его там). Не раз сталкивался. Ирфаном открываю, а он предлагает его переименовать с настоящим расширением. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 11:55 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
На самом деле Imageformat-ов очень много. Вот, к примеру, XnViewMP поддерживает 500 форматов: https://www.xnview.com/en/image_formats/ Для практической работы с БД, я думаю, хватит и десятка самых распостраненных. И, конечно, самый надежный способ анализировать по сигнатуре в файле. Что ещё тут обсуждать? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 12:30 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
06.10.2021 12:30, d7i пишет: > Вот, к примеру, XnViewMP поддерживает 500 форматов: > https://www.xnview.com/en/image_formats/ у них там и CSV среди графических чалится ;) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 12:33 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
shalamyansky Не все типы картинок имеют однозначную сигнатуру, например, bmp не имеет. Поэтому обычно вьюеры ориентируются на параллельно с файлом приходящий content-type , например, image/jpeg , или в крайнем случае на расширение. Виноват, ляпнул по старой памяти, не проверив. Bmp имеет сигнатуру ВМ. Наверное, я ico имел в виду. Там нули в начале, не очень надежный способ идентификации типа. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 16:12 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Хранить в отдельных полях полезно и content-type, и размер в байтах, и размер в пикселах, и даже хеш файла. Это несколько избыточно, зато потом поиск эффективно можно организовать. Например, ограничить выборку только маленькими (меньше 1MB) картинками типа gif. Даже если сейчас нет такой нужды, когда-нибудь обязательно возникнет. А при наличии хеша можно быстро найти по известной картинке (и более ничего) соответствующую запись. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 16:24 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Кстати, вот весьма полезная задача - найти дубли картинок. Шарашить квадратичным поиском сравнения блобов тяжеловато будет, особенно на емких базах. А если есть хеш и индекс по нему - милое дело. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 16:50 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Хэш тут как раз ни к чему, поскольку он для почти одинаковых картинок выдаст совершенно разные значения. Тут "антихэш" какой-то нужен. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 17:03 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Хэш тут как раз ни к чему, поскольку он для почти одинаковых картинок выдаст совершенно разные значения. Тут "антихэш" какой-то нужен. иногда было смешно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 17:07 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, В рассматриваемом мной контексте нет задачи искать "похожесть" картинок, синий цветок на желтом поле или портрет Путина. Для этой цели есть специальные инструменты с ИИ и другими высокими материями. Я говорю лишь о точном совпадении, что практически тоже бывает полезно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 17:11 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
shalamyansky> найти по известной картинке (и более ничего) shalamyansky> соответствующую запись. И для чего же нужен был такой поиск? Интересен конкретный прикладной пример. shalamyansky> Кстати, вот весьма полезная задача - найти дубли картинок. shalamyansky> Шарашить квадратичным поиском сравнения блобов shalamyansky> тяжеловато будет, особенно на емких базах. Шарашить все и не нужно, достаточно только те, у которых размер совпадает. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 17:36 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам И для чего же нужен был такой поиск? Интересен конкретный прикладной пример. Ну, например, команда дизайнеров и этих, контент-менеджеров, делает сайт, портал даже. Много страниц, много разных картинок, много всего. Каждый в своем углу ковыряется. Все хозяйство лежит в БД. И вот одному э... контент-менеджеру приходит гениальная мысль посадить в свой уголок рыжего котика. Он роется в файлах общей помойки, или даже в интернете, и, ура, находит котика! Засовывает в базу, ставит ссылку, как полагается в их системе. И невдомек ему, что еще вчера коллега засунул в базу точно такого же котика. И теперь в базе 2 котика. А когда начальство - Что еще за хрень?! - прикажет убрать безобразие, удалится только один, а второй будет жить до поры до времени, пока тоже не попадется на глаза. И то, что э... контент-менеджер один, проблемы не решает. Правая рука часто не знает, что делает левая, особенно когда прошли месяцы и годы. А так при загрузке небольшая проверка - опаньки, а такой-то файл уже есть! И используется он там-то и там-то. Удобно же. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 19:39 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Шарашить все и не нужно, достаточно только те, у которых размер совпадает. Тогда таки размер надо держать в отдельном поле. По сути размер - это тот же хеш, только с большой вероятностью конфликтов. Так уж лучше в качестве хеша хороший хеш использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 19:42 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
shalamyansky> И используется он там-то и там-то. Удобно же. Ну т.е. это Вы прям щас придумали. ОК. shalamyansky> Так уж лучше в качестве хеша хороший хеш использовать. Лучше не плодить фигню без необходимости, ИМХО. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 20:42 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Ну т.е. это Вы прям щас придумали. ОК. Это да. Красивый же пример, а? А если совсем практически, то там более прозаично. Моя утилитка регулярно забирает с определенного ресурса файлы, в данном случае картинки, и закладывает в БД. Картинки имеют уникальные идентификаторы, и при этом их файлы могут меняться со временем, но могут и не меняться. Так вот, чтобы избежать лишних апдейтов и многомегабайтных пересылок, утилита сперва запрашивает у базы атрибуты образа, в том числе хеш, сравнивает их на стороне клиента с новыми атрибутами, в том числе хешем, и делает обновление только в случае расхождений, при этом обновляет только нужное. До поиска еще дело не дошло, но что-то мне подсказывает, что не за горами и поиск. Гаджимурадов Рустам Лучше не плодить фигню без необходимости, ИМХО. Согласен. Проблема лишь в определении фигни. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 21:01 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
shalamyansky> забирает с определенного ресурса картинки Ну таки есть разница между загрузкой картинки в прикладную БД и автоматизацией общения с некими онлайн-каталогами... В любом случае, даже если что-то такое понадобилось бы - всегда можно хеш добавить позже. У меня вообще подозрение, что у ТСа не отдельная таблица MediaStorage, а прямо по месту событий картинки и хранятся. :) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 21:12 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам У меня вообще подозрение, что у ТСа не отдельная таблица MediaStorage, а прямо по месту событий картинки и хранятся. :) Че-та ты разошелся, Рустам. Эдак, ты меня еще и в измене Родине обвинишь :) Да, поле с картинкой всего одно на всю таблю. Пока не решил, что дешевле - хранить ее рядышком или в отдельной табличке вместе другими картинками (да, знаю, что блобы лучше хранить в отдельной табле, ибо проще сделать откат при неудаче - статьи Димы читал). Но к теме топика это мало относится. Наверное, топик можно на этом и прикрыть. Ответы на свой вопрос благодаря участникам я уже получил. Большое спасибо за помощь и советы ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 14:19 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Док> Че-та ты разошелся, Рустам. Эдак, ты Док> меня еще и в измене Родине обвинишь :) Простите, Доктор! Но я же таки угадал: Док> Да, поле с картинкой всего одно на всю таблю. Док> Пока не решил, что дешевле - хранить ее Док> рядышком или в отдельной табличке Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 14:25 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Док Пока не решил, что дешевле Медиа-ресурсы (картинки, аудио, видео) часто лучше в расшаренной папке хранить, иначе b/r не сможете за разумное время делать. Если не устраивает расшаренная папка - можно и UDF написать, который будет с сервера тянуть нужные ресурсы. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 14:34 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
07.10.2021 14:34, ggreggory пишет: > Медиа-ресурсы (картинки, аудио, видео) часто лучше в расшаренной папке хранить, иначе b/r не сможете за разумное время делать. пора уже таки переходить с gbak -а на nbackup Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 14:42 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
ggreggoryиначе b/r не сможете за разумное время делать Разумные люди его и не делают. Никогда. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 14:53 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Мимопроходящий пора уже таки переходить с gbak -а на nbackup Да, есть такое дело. Пока ни разу не пользовался. Рассматриваю gbak ведь не только как инструмент архивации, но и инструмент профилактики возможных проблем. Да и с маленьким файлом базы у вас никогда не будет никакого головняка если она начнёт сыпаться. В самых жутких ситуациях вы просто откатитесь до последней копии за несколько минут. Dimitry Sibiryakov Разумные люди его и не делают. Никогда. Интересненько. А зачем тогда включили в план 5-ой версии оптимизацию GBAK-a ( CORE-2992 ). Неразумные побеждают? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 15:09 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Разумные люди его и не делают. Никогда. ты на данных не сидишь. а тот кто сидит, одной репликацией не ограничивается. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 15:10 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
ggreggoryНеразумные побеждают? :) Нет, разумные подстилают соломку на случай когда придётся-таки восстанавливать базу после потопа. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 15:21 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Мимопроходящийа тот кто сидит, одной репликацией не ограничивается. Что, тоже, как грегг, передёргиваете базу раз в день?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 15:32 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
ggreggory, Даже если рестор через gbak делать с многопоточной активацией индексов, он всё равно будет медленней nbackup на более менее средних БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 15:37 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Дима, наличие репликации не заменяет необходимости делать резервную копию. Вот делать ежедневный рестор, да глупость. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 15:38 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Симонов ДенисВот делать ежедневный рестор, да глупость. Так о нём-то речь и шла. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 15:46 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Симонов ДенисВот делать ежедневный рестор, да глупость. Так о нём-то речь и шла. Симонов Денис Dimitry Sibiryakov, Дима, наличие репликации не заменяет необходимости делать резервную копию. Вот делать ежедневный рестор, да глупость. Ребят, я про ежедневный рестор ничего не писал. Всё нужно в меру. Тем более, что для рестора нужно останавливать работу, а это не всегда возможно. А вот если свет отрубился или просто так сервер упал или полезли внутренние ошибки - самое время сделать b/r. С маленькой базой это легко! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 16:01 |
|
Как получить байты из блоба?
|
|||
---|---|---|---|
#18+
ggreggory, если отрубился свет в 99% случаев ничего делать не надо. Но для успокоения нервов можно запустить онлайн валидацию. Если ошибок не найдено, успокоится и забить. Для починки БД есть gfix, во многих случаях его достаточно. И уж если совсем всё плохо восстанавливаться из последней резервной копии. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 16:29 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1559923]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
2ms |
others: | 244ms |
total: | 417ms |
0 / 0 |