Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / WinForms, .Net Framework |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
HANK Member Откуда: Сообщений: 420 |
Добрый день! вопрос такой: имею в БД Оракл поле blob, которое содержит уже данные закодированные в base64. мне его нужно взять и положить в поле типа byte[] но при этом брать его нужно в первозданном виде. когда я делаю так: Byte[] Bytepar; Bytepar = (Byte[])reader.GetOracleLob(reader.GetOrdinal("Doc_b64")).Value; в результате получаю base64 поверх base64) если я делаю string mys= System.Text.ASCIIEncoding.ASCII.GetString((Byte[])reader.GetOracleLob(reader.GetOrdinal("Doc_b64"))).Value;
string mys= System.Text.ASCIIEncoding.ASCII.GetString(Bytepar);
то получаю исходную строку string mys= reader.GetOracleValue(reader.GetOrdinal("Doc_b64")).ToString(); получаю в значении mys - 'System.Data.OracleClient.OracleLob' если читаю потоком, то получаю массив состоящий из последовательности 'System.Data.OracleClient.OracleLob' т.е. мне надо взять тот текст, сказать что он уже есть byte[] без преобразований. Прошу подсказать как быть. |
13 дек 18, 18:22 [21763357] Ответить | Цитировать Сообщить модератору |
Petro123 Member Откуда: Загрузочный сектор Москвы (AutoPOI.ru) Сообщений: 38643 |
HANK, Какой драйвер и версия? |
13 дек 18, 19:36 [21763424] Ответить | Цитировать Сообщить модератору |
HANK Member Откуда: Сообщений: 420 |
Petro123, using System.Data.OracleClient; 9 oracle |
13 дек 18, 19:38 [21763427] Ответить | Цитировать Сообщить модератору |
LR Member Откуда: 8P8C Сообщений: 2421 |
Непонятно что нужно. base64 - это строка, в которой закодированы какие-то бинарные данные, т.е., если нужно получить/раскодировать эти бинарные данные - используйте Convert.FromBase64String(String) https://docs.microsoft.com/en-us/dotnet/api/system.convert.frombase64string?view=netframework-4.7.2 |
||
14 дек 18, 01:17 [21763560] Ответить | Цитировать Сообщить модератору |
Petro123 Member Откуда: Загрузочный сектор Москвы (AutoPOI.ru) Сообщений: 38643 |
HANK, По хорошему, уже в оракле в блоб данные должны быть в первозданном виде. Зачем кодировали непонятно. |
14 дек 18, 07:22 [21763603] Ответить | Цитировать Сообщить модератору |
HANK Member Откуда: Сообщений: 420 |
Petro123, Я разобрался. в части декодирования , я тоже понял. в Целом считывание и запись оказывается ведется правильно, т.е. то что записано я вижу в свойствах объекта, который использую дальше. НО в момент передачи Объекта, у которого есть свойство с моим полем(base64) данные совпадают, а на выходе запроса я вижу данные которые еще раз были закодированы base64, и чтобы получить исходные данные из переданных нужно 2 раза их декодировать. тип данных объекта - byte[], тип данных при сериализации base64binary. Может быть что сам объект кодирует переданные в него данные? |
14 дек 18, 11:41 [21763831] Ответить | Цитировать Сообщить модератору |
Petro123 Member Откуда: Загрузочный сектор Москвы (AutoPOI.ru) Сообщений: 38643 |
HANK, Еще раз. В оракле есть для двоичных блоб и для текстовых clob. Т. Е. Base64 это текст и подходит другое поле. 2. Ручная сериализация зачем? Рукописный ОРМ? 3. Сериализовать классы можно в бинарном виде без base64. |
14 дек 18, 12:11 [21763876] Ответить | Цитировать Сообщить модератору |
Roman Mejtes Member Откуда: г. Пермь Сообщений: 3605 |
Base64 вообще имеет смысл хранить данные не очень большого объёма. Типа ключей шифрования, тумбочек картинок, прочую мелочевку. |
14 дек 18, 13:34 [21764008] Ответить | Цитировать Сообщить модератору |
Petro123 Member Откуда: Загрузочный сектор Москвы (AutoPOI.ru) Сообщений: 38643 |
Roman Mejtes, Я начал использовать при передаче по http, аттача в мыле и xml data. |
14 дек 18, 13:45 [21764026] Ответить | Цитировать Сообщить модератору |
Изопропил Member Откуда: Сообщений: 31277 |
а в http накойхер? |
||
14 дек 18, 14:54 [21764100] Ответить | Цитировать Сообщить модератору |
Petro123 Member Откуда: Загрузочный сектор Москвы (AutoPOI.ru) Сообщений: 38643 |
|
||||
14 дек 18, 15:08 [21764115] Ответить | Цитировать Сообщить модератору |
Petro123 Member Откуда: Загрузочный сектор Москвы (AutoPOI.ru) Сообщений: 38643 |
Изопропил, https://ru.m.wikipedia.org/wiki/Base64 Раздел про веб |
14 дек 18, 15:11 [21764121] Ответить | Цитировать Сообщить модератору |
HANK Member Откуда: Сообщений: 420 |
Petro123, все понятно, я передаю эти сведения во внешний сервис, формат данных представляется поставщиком сервиса. сейчас коллеги внешнего сервиса разбираются. Спасибо за ответы! |
14 дек 18, 15:45 [21764162] Ответить | Цитировать Сообщить модератору |
Изопропил Member Откуда: Сообщений: 31277 |
Бинарный протокол - изучай матчасть |
||||
14 дек 18, 19:01 [21764370] Ответить | Цитировать Сообщить модератору |
Petro123 Member Откуда: Загрузочный сектор Москвы (AutoPOI.ru) Сообщений: 38643 |
Типа сам ищи?)) |
||||
14 дек 18, 19:12 [21764378] Ответить | Цитировать Сообщить модератору |
Изопропил Member Откуда: Сообщений: 31277 |
Petro123, https://tools.ietf.org/html/rfc2068#section-2.2 https://tools.ietf.org/html/rfc2068#section-7.2 OCTET = <any 8-bit sequence of data> entity-body = *OCTET |
14 дек 18, 22:38 [21764509] Ответить | Цитировать Сообщить модератору |
Petro123 Member Откуда: Загрузочный сектор Москвы (AutoPOI.ru) Сообщений: 38643 |
Изопропил, Примеры двоичных протоколов: RTP, TCP, IP. Примеры текстовых протоколов: SMTP, HTTP, SIP. https://stackoverflow.com/questions/2645009/binary-protocols-v-text-protocols
Отличия от HTTP 1.1 Протокол HTTP/2 является бинарным. https://ru.wikipedia.org/wiki/HTTP/2 |
|
14 дек 18, 23:48 [21764552] Ответить | Цитировать Сообщить модератору |
Изопропил Member Откуда: Сообщений: 31277 |
Petro123, ты серьёзно полагаешь, что двоичные данные по HTTP/1.1 не передаются? |
15 дек 18, 00:07 [21764566] Ответить | Цитировать Сообщить модератору |
Petro123 Member Откуда: Загрузочный сектор Москвы (AutoPOI.ru) Сообщений: 38643 |
Выше синим выделено, что передаются. Но от этой фичи протокол не перестает быть текстовым. Если в ворде можно таблички, то он не перестал быть текстовым процессором брат. Content-Type: image/jpeg <binary data goes here> |
||
15 дек 18, 08:51 [21764636] Ответить | Цитировать Сообщить модератору |
Изопропил Member Откуда: Сообщений: 31277 |
Petro123, а почему тебя беспокоит
|
||
15 дек 18, 10:04 [21764651] Ответить | Цитировать Сообщить модератору |
Petro123 Member Откуда: Загрузочный сектор Москвы (AutoPOI.ru) Сообщений: 38643 |
Ну ты же сам начал спорить не с тем что jpeg нельзя передавать, а с тем что протокол бинарный. Согласись. А юз кейс по передачи - полно: - в урл передать - в заголовке передать - в надпротоколе SOAP передать. -- везде требуется конвертация. В вики примеры. Удачи! |
||||
15 дек 18, 11:37 [21764691] Ответить | Цитировать Сообщить модератору |
Изопропил Member Откуда: Сообщений: 31277 |
неправда. для двоичных данных никакая конвертация не нужна в простейшем случае передаётся Content-Length байтов для Transfer-Encoding: chunked - размер каждого чанка случай multipart/form-data - разжёван в википедии https://ru.wikipedia.org/wiki/Multipart/form-data (если RFC сложен для понимания) PS ещё скажи, что данные Transfer-Encoding: gzip в текстовом виде передаются |
||
15 дек 18, 12:52 [21764742] Ответить | Цитировать Сообщить модератору |
Petro123 Member Откуда: Загрузочный сектор Москвы (AutoPOI.ru) Сообщений: 38643 |
Изопропил, слово "везде" обозначает - для данных юз кейсов:
Не ищи черную кошку в темной комнате. Её там нет. |
||
15 дек 18, 12:56 [21764746] Ответить | Цитировать Сообщить модератору |
Petro123 Member Откуда: Загрузочный сектор Москвы (AutoPOI.ru) Сообщений: 38643 |
ты дал метод где НЕ используется кодирование Base64. Замечательно. Спасибо. Надеюсь я выше дал юз кейсы где Base64 используется. |
||
15 дек 18, 13:03 [21764754] Ответить | Цитировать Сообщить модератору |
Изопропил Member Откуда: Сообщений: 31277 |
основной юзкеис забыл упомянуть - HTTP POST |
||
15 дек 18, 13:08 [21764758] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Все форумы / WinForms, .Net Framework | ![]() |