2016-07-22 7 views
1

質問がありますいつも文字列のレスポンスのケースがありますが、これはファイルの内容をダウンロードすることを想定していますが、私は応答して、文字列を取得していた場合に終わりにPNGに変換することが可能であり、私のような何かを試してみました:私は残りの部分からbase64文字列を取得イムは、その一部(のように見えると思ういけないIMGや他のファイルタイプにしようとするRESTレスポンス

byte[] array = Encoding.ASCII.GetBytes(result.data); //response content 
MemoryStream ms = new MemoryStream(array); 
Image i = Image.FromStream(ms); 

を私はremmebr base64が3 ===で終わっていて、印刷できない文字がない場合):

PNG\ r \ n \ n \ 0 \ 0 \ 0 \ rIHDR \ 0 \ 0 \ 0 \ rIHDR \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0sRGB \ 0 \ 0 \ 0 \ 0ガマ¥0¥0¥0¥0¥0¥0¥tp¥0¥0¥0¥0¥0 txfx¥0¥0¥f¥aIDATx ^!!x L Jde% yy D H$ d%2 S Hd%y < ӹ r r r r r r r r r r r r r r r r r (H | \ 0 \ a(H | \ 0 \ a) (H | \ 0 \ a(H | \ 0 \ a) 0 "" \ \ \ \ \ \ \ \ \ \ \0 Dǯ z4 R C 7 #J > |D $> \f |D $> \f 7X、 _\ v] V ^/= 4$ $: P9

+0

のようなものは、残念ながら、私はサーバ側へのアクセスを持っていない – Paresh

答えて

1

APIレスポンスからベース64文字列を返すと仮定すると、

のようにすることができます
byte[] bytes = Convert.FromBase64String(result.data); 
Image image; 
using (MemoryStream ms = new MemoryStream(bytes)) 
{ 
    image = Image.FromStream(ms); 
} 
return image; 

それとも、1ファイル

string filePath = "Image.png"; 
File.WriteAllBytes(filePath, Convert.FromBase64String(result.data)); 

EDITに直接保存することができます:

はどのようにあなたのWeb APIからデータを戻ってきていますか?バイト配列を返すためにこのようなことをしてから、この配列を直接ストリームに書き込むことができます。

var result = new HttpResponseMessage(HttpStatusCode.OK); 
String filePath = HostingEnvironment.MapPath("~/imagename.png"); 
FileStream fileStream = new FileStream(filePath, FileMode.Open); 
Image image = Image.FromStream(fileStream); 
MemoryStream memoryStream = new MemoryStream(); 
image.Save(memoryStream, ImageFormat.Jpeg); 
result.Content = new ByteArrayContent(memoryStream.ToArray()); 
result.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png"); 
return result; 

、あなたが行うことができ、クライアント側で

var data = response.Content.ReadAsByteArrayAsync().Result; 
Image image; 
using (MemoryStream ms = new MemoryStream(data)) 
{ 
    image = Image.FromStream(ms); 
} 
return image; 
+0

の下に私の編集を確認してください。 –

+0

質問に記載されているサンプルデータに基づいて、APIがバイト配列を返すように見えます。私は上記の答えで述べたクライアント側のコードを試してみてください。 – Paresh

+0

私はこのコードに基づいて微妙な調整を行いました。 –

関連する問題