[C#/MSSQL] Image jako tekst

0

Witam,
W bazie danych jest kolumna typu: image, a do niej zaciągnięte pliki tekstowe (nie mam na wpływu).
Potrzebuję wyciągnąć z bazy danych zawartość tego pliku tekstowego do postaci string.
Jakieś pomysły?
Z góry dziękuje za pomoc!

0

image to tablica byte
a byte[] chyba wiesz jak przeksztalcic do stringa?

0

Otrzymam coś takiego:

eNrVfVuPI8lx9bsA/QdinumZtWFbhjQrYyHZwADyQMai9WrUkDU9ZRXJXrKqV/73zohzTkRksUcC5G0BBj5/mmWTdcmMy4kTl3x/nJ53h3m
43b598+nypze/fm8f3Jb/mcdv33yeL8Pyy+v0+GX51Wm4Pk7nv5vHz8sv//npT/rvT5dluZz8k/bbYfflOn7+9s2XZXn65bt3P/7449vPw235cr
ktt7eHy9v1j++Gz5/f/evw+dt/+OabX8zT0209/fb79st3g/16aRcdl2/f/NeneTj/8c391Q7D5/HpOt7saqd3+P279vPp9Li7XQ/dd/FX/+J0Gh7H
G7//zT+9fZw+v9n9OB2XL9+++ftvvmk3Gu0l+R+fLtfjeP32TfvnMLcPf+c/e7N7h8f8dG3/+vnPdru/2QP/40/wwH+zh/3F/6eH/Zef4mHfNZ
WB3kzHb9/gym+ahLx
...

A to nie jest oryginalna zawartość pliku tekstowego, który wciągnąłem do bazy...

0

jakis base32 albo base64

0

"jakiś base64" zwraca:

eNrVfVuPI8lx9bsA/QdinumZtWFbhjQrYyHZwADyQMai9WrUkDU9ZRXJXrKqV/73zohzTkRksUcC5G0BBj5/mmWTdcmMy4kTl3x/n
J53h3m43b598+nypze/fm8f3Jb/mcdv33yeL8Pyy+v0+GX51Wm4Pk7nv5vHz8sv//npT/rvT5dluZz8k/bbYfflOn7+9s2XZXn65bt3P/7449vPw
235crktt7eHy9v1j++Gz5/f/evw+dt/+OabX8zT0209/fb79st3g/16aRcdl2/f/NeneTj/8c391Q7D5/HpOt7saqd3+P279vPp9Li7XQ/dd/FX/+J0G
h7HG7//zT+9fZw+v9n9OB2XL9+++ftvvmk3Gu0l+R+fLtfjeP32TfvnMLcPf+c/e7N7h8f8dG3/+vnPdru/2QP/40/wwH+zh/3F/6eH/Zef4mHfN
ZWB3kzHb9/gym+ahLx/av/f7y7X8bTzz3bHy3y57m7TshtO47LfHS7n23hYxmW97obj9DTdDtP5cTfO0/J29/16exrPx+l2G3fP47wbr5cbrrPff
b62703zPOwO6/W23na34Wkaz293/zGs1+m2m9fD0j61pTu2u7Xrt2u/3f32ch4Pu+dpGcbdebpNO/vP/15vy2X3NA+H8Tosu6dxnsfzMt5+W
MfddN6N6+42nuLKU/vT9dje5fNwmOZ2jRsvsLafXq7L8Hb3n+vkP54vbfWW9oWxfXC6HHcnv8R+90P7793anv50uFyfxiuffre0vy6T/bRd5cN
592U4tP/71B7X1qA94TIOu+PUXu10awv0b8s0nHa3yzxPh2lZj+1hL9fzcB3bDewPXOZdW59DW9tF7x/PhQc/tau3+/17+9bIq9fNGNoLc8me
x/N4HhZbyd9fh/HWlmm3tEu1PeW+cN39BW/D47TYbYZ9+/3zeL0Oud7tCnWd8ZbtcqfL9dNUFqLdY/RLtvc4j/zHaZjH2zoch7YJp7Hd4MAd3o
1NtNtqvd19XM+HboldemJJ1rZOu2U8tR3ju/necYd2z8N1WkNe4lenJjB2TXv9S1vtskq+iP56funrl8v50B62ClMTIX853O+6Lte20LNph27URIh
bMml3XUr9w33bm8f2n7fp5GKJN/Wlrn9q4toU/Nye8fvx2AvH43V4ntqimZjv7RqnS1vHZWqSOl5272/L9XJ+/HVs27psNunzuD5O9tPheljtYfW
Wt8vRduT9O15iHwKNXbGFtp272W93y3Q+TMe1bXZ75LmtmQv8Yfe0Xn3NTXZSuajfw/po0qCdiPd9+/7dkyyN3sBePG+Sl3LrUx6yvYEMhAt
5LMfQ3vz9ePr1b65tgc30nE2apqP9u315nZt8HprchZi+f9e+vVkt14Gj7aFdgWpC9ZJBOF/Odtnz
.....

To nadal nie to samo...

0

No to spróbuj zdekodować to jako base64 i zobacz czy ci sie uda. Po co wklejasz 2 razy to samo?

0

Oj nie wychodzi, za każdym razem inny, śmieszny ciąg znaków.
Uprzejmie proszę o przykład...

Pobieram byte[] z SQL:

byte[] image = (byte[])MsSqlDataReader["DAB_Wartosc"];


co z tym dalej?
0

wklej jeden kompletny ciag bez '...', sprawdzales base32 ?

0

Zawartosć pliku zaciaganego do bazy danych:
http://xle.pl/pliki/temp/LoremIpsum.html

Base64 string po wyciagnięciu z bazy i zamianie:
http://xle.pl/pliki/temp/LoremIpsum_Base64.txt

Użyta metoda:
txt = Convert.ToBase64String(image);


[<i>Edit</i>]
<b>Wrzucam jeszcze definicję tabeli:</b>
```sql
CREATE TABLE [CDN].[DaneBinarne](
	[DAB_DABID] [int] IDENTITY(1,1) NOT NULL,
	[DAB_TwAID] [int] NOT NULL,
	[DAB_Wartosc] [image] NULL,
	[DAB_Rozmiar] [int] NULL,
	[DAB_NazwaPliku] [varchar](254) COLLATE Polish_CI_AS NOT NULL,
	[DAB_Nazwa] [varchar](128) COLLATE Polish_CI_AS NULL,
	[DAB_Rozszerzenie] [varchar](4) COLLATE Polish_CI_AS NULL,
	[DaB_Typ] [int] NULL,
 CONSTRAINT [DAB_Primary] PRIMARY KEY CLUSTERED 
(
	[DAB_DABID] ASC
)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

[Edit 2]
Przy próbie zrzucenia pliku w taki sam sposób jak obrazka (przy czym zrzucanie obrazków działa poprawnie) mam plik tekstowy z krzakami w środku.
Użyta metoda:
byte[] image = null;
FileStream fs = null;
string filename = Path.Combine(this._Path, "Description.html");

        if (MsSqlDataReader.Read())
        {
            image = (byte[])MsSqlDataReader["DAB_Wartosc"];
            int ArraySize = new int();
            ArraySize = image.GetUpperBound(0);
            fs = new FileStream(@filename, FileMode.OpenOrCreate, FileAccess.Write);
            fs.Write(image, 0, ArraySize);
            fs.Close();
        }
        MsSqlDataReader.Close();

<b>Zrzucony plik:</b> <a href="http://xle.pl/pliki/temp/Description.html">http://xle.pl/pliki/temp/Description.html</a>


[<i>Edit 3</i>]
Przy użyciu:
<code class="c#">
FileStream fs = new FileStream(_FileName, FileMode.Create, FileAccess.ReadWrite);
                BinaryWriter bw = new BinaryWriter(fs);
                bw.Write(_ByteArray);
                bw.Close();

... w pliku wynikowym również krzaki.

0

txt = Convert.ToBase64String(image);

konwertuje do Base64 a nie z Base64 ... jeszcze sa funkcje FromBase64. I mozna jeszcze z base32.

No ale to co podales na poczatku i to co jest teraz w html rozni sie bardzo .... podaj przyklad pierwszy ? Jak osiagneles takie ladne dane (ASCII) ?

0

Dane sa skompresowane, dlatego wychodzi cos innego. Uzyty jest dp tego zlib

1 użytkowników online, w tym zalogowanych: 0, gości: 1