Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 blob в byte  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: blob в byte  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
HANK,
Какой драйвер и версия?
13 дек 18, 19:36    [21763424]     Ответить | Цитировать Сообщить модератору
 Re: blob в byte  [new]
HANK
Member

Откуда:
Сообщений: 420
Petro123,

using System.Data.OracleClient;
9 oracle
13 дек 18, 19:38    [21763427]     Ответить | Цитировать Сообщить модератору
 Re: blob в byte  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2421
HANK
поле blob, которое содержит уже данные закодированные в base64.
мне его нужно взять и положить в поле типа byte[]
но при этом брать его нужно в первозданном виде.

Непонятно что нужно. 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]     Ответить | Цитировать Сообщить модератору
 Re: blob в byte  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
HANK,
По хорошему, уже в оракле в блоб данные должны быть в первозданном виде.
Зачем кодировали непонятно.
14 дек 18, 07:22    [21763603]     Ответить | Цитировать Сообщить модератору
 Re: blob в byte  [new]
HANK
Member

Откуда:
Сообщений: 420
Petro123,
Я разобрался. в части декодирования , я тоже понял. в Целом считывание и запись оказывается ведется правильно, т.е. то что записано я вижу в свойствах объекта, который использую дальше.
НО
в момент передачи Объекта, у которого есть свойство с моим полем(base64) данные совпадают, а на выходе запроса я вижу данные которые еще раз были закодированы base64, и чтобы получить исходные данные из переданных нужно 2 раза их декодировать.

тип данных объекта - byte[], тип данных при сериализации base64binary. Может быть что сам объект кодирует переданные в него данные?
14 дек 18, 11:41    [21763831]     Ответить | Цитировать Сообщить модератору
 Re: blob в byte  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
HANK,
Еще раз.
В оракле есть для двоичных блоб и для текстовых clob.
Т. Е. Base64 это текст и подходит другое поле.
2. Ручная сериализация зачем? Рукописный ОРМ?
3. Сериализовать классы можно в бинарном виде без base64.
14 дек 18, 12:11    [21763876]     Ответить | Цитировать Сообщить модератору
 Re: blob в byte  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3605
Base64 вообще имеет смысл хранить данные не очень большого объёма. Типа ключей шифрования, тумбочек картинок, прочую мелочевку.
14 дек 18, 13:34    [21764008]     Ответить | Цитировать Сообщить модератору
 Re: blob в byte  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Roman Mejtes,
Я начал использовать при передаче по http, аттача в мыле и xml data.
14 дек 18, 13:45    [21764026]     Ответить | Цитировать Сообщить модератору
 Re: blob в byte  [new]
Изопропил
Member

Откуда:
Сообщений: 31277
Petro123
Roman Mejtes,
Я начал использовать при передаче по http, аттача в мыле и xml data.

а в http накойхер?
14 дек 18, 14:54    [21764100]     Ответить | Цитировать Сообщить модератору
 Re: blob в byte  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Изопропил
Petro123
Roman Mejtes,
Я начал использовать при передаче по http, аттача в мыле и xml data.

а в http накойхер?
протокол текстовый. Как данные бинарные передать?
14 дек 18, 15:08    [21764115]     Ответить | Цитировать Сообщить модератору
 Re: blob в byte  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Изопропил,

https://ru.m.wikipedia.org/wiki/Base64
Раздел про веб
14 дек 18, 15:11    [21764121]     Ответить | Цитировать Сообщить модератору
 Re: blob в byte  [new]
HANK
Member

Откуда:
Сообщений: 420
Petro123,
все понятно, я передаю эти сведения во внешний сервис, формат данных представляется поставщиком сервиса.
сейчас коллеги внешнего сервиса разбираются.

Спасибо за ответы!
14 дек 18, 15:45    [21764162]     Ответить | Цитировать Сообщить модератору
 Re: blob в byte  [new]
Изопропил
Member

Откуда:
Сообщений: 31277
Petro123
Изопропил
пропущено...

а в http накойхер?
протокол текстовый. Как данные бинарные передать?

Бинарный протокол - изучай матчасть
14 дек 18, 19:01    [21764370]     Ответить | Цитировать Сообщить модератору
 Re: blob в byte  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Изопропил
Petro123
пропущено...
протокол текстовый. Как данные бинарные передать?

Бинарный протокол - изучай матчасть
а ссылка где?
Типа сам ищи?))
14 дек 18, 19:12    [21764378]     Ответить | Цитировать Сообщить модератору
 Re: blob в byte  [new]
Изопропил
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]     Ответить | Цитировать Сообщить модератору
 Re: blob в byte  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Изопропил,
Примеры двоичных протоколов: RTP, TCP, IP.
Примеры текстовых протоколов: SMTP, HTTP, SIP.
https://stackoverflow.com/questions/2645009/binary-protocols-v-text-protocols
+
Binary protocol versus text protocol isn't really about how binary blobs are encoded. The difference is really whether the protocol is oriented around data structures or around text strings. Let me give an example: HTTP. HTTP is a text protocol, even though when it sends a jpeg image, it just sends the raw bytes, not a text encoding of them.

But what makes HTTP a text protocol is that the exchange to get the jpg looks like this:

Request:

GET /files/image.jpg HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.01 [en] (Win95; I)
Host: hal.etc.com.au
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Response:

HTTP/1.1 200 OK
Date: Mon, 19 Jan 1998 03:52:51 GMT
Server: Apache/1.2.4
Last-Modified: Wed, 08 Oct 1997 04:15:24 GMT
ETag: "61a85-17c3-343b08dc"
Content-Length: 60830
Accept-Ranges: bytes
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: image/jpeg

<binary data goes here>

Отличия от HTTP 1.1
Протокол HTTP/2 является бинарным.
https://ru.wikipedia.org/wiki/HTTP/2
14 дек 18, 23:48    [21764552]     Ответить | Цитировать Сообщить модератору
 Re: blob в byte  [new]
Изопропил
Member

Откуда:
Сообщений: 31277
Petro123,

ты серьёзно полагаешь, что двоичные данные по HTTP/1.1 не передаются?
15 дек 18, 00:07    [21764566]     Ответить | Цитировать Сообщить модератору
 Re: blob в byte  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Изопропил
Petro123,

ты серьёзно полагаешь, что двоичные данные по HTTP/1.1 не передаются?

Выше синим выделено, что передаются. Но от этой фичи протокол не перестает быть текстовым.
Если в ворде можно таблички, то он не перестал быть текстовым процессором брат.
Content-Type: image/jpeg
<binary data goes here>
15 дек 18, 08:51    [21764636]     Ответить | Цитировать Сообщить модератору
 Re: blob в byte  [new]
Изопропил
Member

Откуда:
Сообщений: 31277
Petro123,

а почему тебя беспокоит
Petro123
протокол текстовый. Как данные бинарные передать?
15 дек 18, 10:04    [21764651]     Ответить | Цитировать Сообщить модератору
 Re: blob в byte  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Изопропил
Petro123,

а почему тебя беспокоит
Petro123
протокол текстовый. Как данные бинарные передать?

Ну ты же сам начал спорить не с тем что jpeg нельзя передавать, а с тем что протокол бинарный.
Согласись.
А юз кейс по передачи - полно:
- в урл передать
- в заголовке передать
- в надпротоколе SOAP передать.
--
везде требуется конвертация. В вики примеры.
Удачи!
15 дек 18, 11:37    [21764691]     Ответить | Цитировать Сообщить модератору
 Re: blob в byte  [new]
Изопропил
Member

Откуда:
Сообщений: 31277
Petro123
везде требуется конвертация

неправда.

для двоичных данных никакая конвертация не нужна
в простейшем случае передаётся 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]     Ответить | Цитировать Сообщить модератору
 Re: blob в byte  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Изопропил,
слово "везде" обозначает - для данных юз кейсов:
автор
А юз кейс по передачи - полно:
- в урл передать
- в заголовке передать
- в надпротоколе SOAP передать.

Не ищи черную кошку в темной комнате. Её там нет.
15 дек 18, 12:56    [21764746]     Ответить | Цитировать Сообщить модератору
 Re: blob в byte  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Изопропил
случай multipart/form-data

ты дал метод где НЕ используется кодирование Base64.
Замечательно.
Спасибо.
Надеюсь я выше дал юз кейсы где Base64 используется.
15 дек 18, 13:03    [21764754]     Ответить | Цитировать Сообщить модератору
 Re: blob в byte  [new]
Изопропил
Member

Откуда:
Сообщений: 31277
Petro123
слово "везде" обозначает - для данных юз кейсов:

основной юзкеис забыл упомянуть - HTTP POST
15 дек 18, 13:08    [21764758]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / WinForms, .Net Framework Ответить