2017-10-09 9 views
0

指定された場所に画像を保存するAPIを作成しようとしています。以下はバイトから画像を保存する

その

Image image = Image.FromFile(@"C:\Users\abc\Desktop\img-logo.jpg"); 
       byte[] bytes = (byte[])(new ImageConverter()).ConvertTo(image, typeof(byte[])); 
       string str = Convert.ToBase64String(bytes); 
       Save_Application_Image("12004", str); 

とAPIのメソッド

public void Save_Application_Image(string staffCode , string bytearray) 
    { 
     try 
     { 
      byte[] bytes = Convert.FromBase64String(bytearray); 
      file_path = "~/uploads/" + file_name; 
      FileStream file = File.Create(HttpContext.Current.Server.MapPath(file_path)); 
      file.Write(bytes, 0, bytes.Length); 
      file.Close(); 
     } 
     catch(Exception ex) 
     { 
      logger.LogError(ex); 
     } 
     finally 
     { 
     } 
    } 

このAPIの私のコードで私は2つの文字列パラメータを受け取ることになりますので、Androidのアプリケーションから呼び出されることがあります。

ファイルを完全に保存していますが、ファイルを読み込めません。画像ファイルのプレビューがありません。

これには適切な方法はありますか?

+1

なぜあなたも代わりに 'UTF8'(またはおそらくの' ASCII'を使用しています'Base64'?Web APIも自動的に' byte [] 'を受け取ることができるので、文字列に変換する必要はありません。 –

+0

親愛なる@CamiloTerevinto、それは問題ではありません。 – Jack

+0

最終結果が最初のデータとまったく同じではないため、イメージを読み取ることができません。そのため、私はenを変更するように提案しましたコーディング –

答えて

0

私はどのようにImageConverter作品のわからないんだけど、私はbyte[]Image Sを変換する前にこれを使用しました:

Image image = Image.FromFile(@"C:\Users\abc\Desktop\img-logo.jpg"); 
using (var stream = new MemoryStream()) 
{ 
    image.Save(stream); 
    string savedImage = Convert.ToBase64String(stream.ToArray()); 
    Save_Application_Image("12004", str); 
} 
関連する問題