A kép mentése fájlba egy adott url - verem túlcsordulás orosz

Meg kell menteni a fájlt (ebben az esetben a kép, de általában ilyen), url. Azt, hogy egy kérelmet a het XNET.

Ez választ ad vissza objektumot, amelyből az adatok is nyerhetjük, hogy a segítségével ToStream toString. Próbáltam megtenni:

De mivel a fájl helyett a kívánt karakter kérdőjel. Megértem, mert én kapták meg az adatokat, mint egy húr (de miért vannak torz?). És hogy mentse bináris formátumú szükséges használni patak? Általában én nem egészen értem, ebben a pillanatban, mondd el. Köszönöm.

állítsa január 16 '16 at 12:46

A probléma az, hogy az Ön által használt API, amely visszaadja a húr.

Kép áll bájtok sorozata. Ez egy bájtsorozatok és jön a szerver. Bármilyen dekódolás ez bájtsorozatok a húr - egy hiba, mert a kép - ez egy bináris helyett szöveges formátumban.

Megnézzük, hogy mi történik a képen a programban.

  1. A szerver jön egy sor bájt
  2. Valahol konvertálja a string a kódolás 1
  3. Ezután a karakterlánc alakítjuk egy byte-szekvencia segítségével egy kódoló 2
  4. Az így kapott szekvenciát bájtok a fájlba.

Nyilvánvalónak kellene lennie, hogy ha a kódolás az 1. és 2. nem azonos - a szemétbe kerül rögzítésre fájlt. Határozatában már megoldotta a problémát megadásával ugyanazt a kódolást a 2. és 3. lépést jog azonban a program nem.

Például, ha a 2. lépésben fog esni bájtok sorozata, amely nem érvényes karakter - ez lesz átalakul „kérdés”, és a 3. lépésben, az a kérdés, lehetetlen lesz átalakítani vissza.

A helyes megoldás az lenne, hogy dobja ki 2. és 3. lépés nafig. És ehhez az szükséges, hogy lemondanak a használata sorok visszatérni Web.GetRequest

Itt a kód, ami nem tesz felesleges változtatásokat:

Vagy, mint ez (egy fájl értelmetlen, idézek példaként dolgozik a flow):

És lehet, hogy az egész tömb byte, ha szükséges: