Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / blob в byte / 25 сообщений из 34, страница 1 из 2
13.12.2018, 18:22
    #39747581
HANK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
blob в byte
Добрый день! вопрос такой:
имею в БД Оракл поле blob, которое содержит уже данные закодированные в base64.
мне его нужно взять и положить в поле типа byte[]
но при этом брать его нужно в первозданном виде.
когда я делаю так:
Код: c#
1.
2.
Byte[] Bytepar; 
Bytepar = (Byte[])reader.GetOracleLob(reader.GetOrdinal("Doc_b64")).Value;


в результате получаю base64 поверх base64)

если я делаю
Код: c#
1.
string mys= System.Text.ASCIIEncoding.ASCII.GetString((Byte[])reader.GetOracleLob(reader.GetOrdinal("Doc_b64"))).Value;


Код: c#
1.
string mys= System.Text.ASCIIEncoding.ASCII.GetString(Bytepar);


то получаю исходную строку
Код: c#
1.
string mys= reader.GetOracleValue(reader.GetOrdinal("Doc_b64")).ToString();


получаю в значении mys - ' System.Data.OracleClient.OracleLob '
если читаю потоком, то получаю массив состоящий из последовательности ' System.Data.OracleClient.OracleLob '

т.е. мне надо взять тот текст, сказать что он уже есть byte[] без преобразований.

Прошу подсказать как быть.
...
Рейтинг: 0 / 0
13.12.2018, 19:36
    #39747621
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
blob в byte
HANK,
Какой драйвер и версия?
...
Рейтинг: 0 / 0
13.12.2018, 19:38
    #39747622
HANK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
blob в byte
Petro123,

using System.Data.OracleClient;
9 oracle
...
Рейтинг: 0 / 0
14.12.2018, 01:17
    #39747677
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
blob в byte
HANKполе blob, которое содержит уже данные закодированные в base64.
мне его нужно взять и положить в поле типа byte[]
но при этом брать его нужно в первозданном виде.
Непонятно что нужно. base64 - это строка, в которой закодированы какие-то бинарные данные, т.е., если нужно получить/раскодировать эти бинарные данные - используйте Convert.FromBase64String(String) https://docs.microsoft.com/en-us/dotnet/api/system.convert.frombase64string?view=netframework-4.7.2
...
Рейтинг: 0 / 0
14.12.2018, 07:22
    #39747696
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
blob в byte
HANK,
По хорошему, уже в оракле в блоб данные должны быть в первозданном виде.
Зачем кодировали непонятно.
...
Рейтинг: 0 / 0
14.12.2018, 11:41
    #39747812
HANK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
blob в byte
Petro123,
Я разобрался. в части декодирования , я тоже понял. в Целом считывание и запись оказывается ведется правильно, т.е. то что записано я вижу в свойствах объекта, который использую дальше.
НО
в момент передачи Объекта, у которого есть свойство с моим полем(base64) данные совпадают, а на выходе запроса я вижу данные которые еще раз были закодированы base64, и чтобы получить исходные данные из переданных нужно 2 раза их декодировать.

тип данных объекта - byte[], тип данных при сериализации base64binary. Может быть что сам объект кодирует переданные в него данные?
...
Рейтинг: 0 / 0
14.12.2018, 12:11
    #39747831
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
blob в byte
HANK,
Еще раз.
В оракле есть для двоичных блоб и для текстовых clob.
Т. Е. Base64 это текст и подходит другое поле.
2. Ручная сериализация зачем? Рукописный ОРМ?
3. Сериализовать классы можно в бинарном виде без base64.
...
Рейтинг: 0 / 0
14.12.2018, 13:34
    #39747902
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
blob в byte
Base64 вообще имеет смысл хранить данные не очень большого объёма. Типа ключей шифрования, тумбочек картинок, прочую мелочевку.
...
Рейтинг: 0 / 0
14.12.2018, 13:45
    #39747915
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
blob в byte
Roman Mejtes,
Я начал использовать при передаче по http, аттача в мыле и xml data.
...
Рейтинг: 0 / 0
14.12.2018, 14:54
    #39747955
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
blob в byte
Petro123Roman Mejtes,
Я начал использовать при передаче по http, аттача в мыле и xml data.
а в http накойхер?
...
Рейтинг: 0 / 0
14.12.2018, 15:08
    #39747963
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
blob в byte
ИзопропилPetro123Roman Mejtes,
Я начал использовать при передаче по http, аттача в мыле и xml data.
а в http накойхер?протокол текстовый. Как данные бинарные передать?
...
Рейтинг: 0 / 0
14.12.2018, 15:11
    #39747967
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
blob в byte
Изопропил,

https://ru.m.wikipedia.org/wiki/Base64
Раздел про веб
...
Рейтинг: 0 / 0
14.12.2018, 15:45
    #39747994
HANK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
blob в byte
Petro123,
все понятно, я передаю эти сведения во внешний сервис, формат данных представляется поставщиком сервиса.
сейчас коллеги внешнего сервиса разбираются.

Спасибо за ответы!
...
Рейтинг: 0 / 0
14.12.2018, 19:01
    #39748130
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
blob в byte
Petro123Изопропилпропущено...

а в http накойхер?протокол текстовый. Как данные бинарные передать?
Бинарный протокол - изучай матчасть
...
Рейтинг: 0 / 0
14.12.2018, 19:12
    #39748135
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
blob в byte
ИзопропилPetro123пропущено...
протокол текстовый. Как данные бинарные передать?
Бинарный протокол - изучай матчастьа ссылка где?
Типа сам ищи?))
...
Рейтинг: 0 / 0
14.12.2018, 22:38
    #39748228
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
blob в byte
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
...
Рейтинг: 0 / 0
14.12.2018, 23:48
    #39748262
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
blob в byte
Изопропил,
Примеры двоичных протоколов: 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
...
Рейтинг: 0 / 0
15.12.2018, 00:07
    #39748274
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
blob в byte
Petro123,

ты серьёзно полагаешь, что двоичные данные по HTTP/1.1 не передаются?
...
Рейтинг: 0 / 0
15.12.2018, 08:51
    #39748307
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
blob в byte
ИзопропилPetro123,

ты серьёзно полагаешь, что двоичные данные по HTTP/1.1 не передаются?
Выше синим выделено, что передаются. Но от этой фичи протокол не перестает быть текстовым.
Если в ворде можно таблички, то он не перестал быть текстовым процессором брат.
Content-Type: image/jpeg
<binary data goes here>
...
Рейтинг: 0 / 0
15.12.2018, 10:04
    #39748318
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
blob в byte
Petro123,

а почему тебя беспокоит
Petro123протокол текстовый. Как данные бинарные передать?
...
Рейтинг: 0 / 0
15.12.2018, 11:37
    #39748339
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
blob в byte
ИзопропилPetro123,

а почему тебя беспокоит
Petro123протокол текстовый. Как данные бинарные передать?
Ну ты же сам начал спорить не с тем что jpeg нельзя передавать, а с тем что протокол бинарный.
Согласись.
А юз кейс по передачи - полно:
- в урл передать
- в заголовке передать
- в надпротоколе SOAP передать.
--
везде требуется конвертация. В вики примеры.
Удачи!
...
Рейтинг: 0 / 0
15.12.2018, 12:52
    #39748357
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
blob в byte
Petro123везде требуется конвертация
неправда.

для двоичных данных никакая конвертация не нужна
в простейшем случае передаётся Content-Length байтов
для Transfer-Encoding: chunked - размер каждого чанка

случай multipart/form-data - разжёван в википедии https://ru.wikipedia.org/wiki/Multipart/form-data
(если RFC сложен для понимания)

PS ещё скажи, что данные Transfer-Encoding: gzip в текстовом виде передаются
...
Рейтинг: 0 / 0
15.12.2018, 12:56
    #39748359
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
blob в byte
Изопропил,
слово "везде" обозначает - для данных юз кейсов:
авторА юз кейс по передачи - полно:
- в урл передать
- в заголовке передать
- в надпротоколе SOAP передать.
Не ищи черную кошку в темной комнате. Её там нет.
...
Рейтинг: 0 / 0
15.12.2018, 13:03
    #39748365
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
blob в byte
Изопропилслучай multipart/form-data
ты дал метод где НЕ используется кодирование Base64.
Замечательно.
Спасибо.
Надеюсь я выше дал юз кейсы где Base64 используется.
...
Рейтинг: 0 / 0
15.12.2018, 13:08
    #39748367
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
blob в byte
Petro123слово "везде" обозначает - для данных юз кейсов:
основной юзкеис забыл упомянуть - HTTP POST
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / blob в byte / 25 сообщений из 34, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]