2

WPF アプリケーションと ASP.NET MVC サイトがあります。WPF アプリケーションは Kinect を使用して画像をキャプチャし、これらはファイルとして保存されます。私がやりたいことは、ファイルを WPF アプリケーションから ASP.NET MVC サイトに送信することです。

画像ファイルからバイトを取得し、Base64を使用して文字列に変換する次のことを試しました。次に、文字列をバイトに戻してからファイルに戻します。最後のファイルが壊れていてロードされないことを除いて、プロセス全体が機能します。

また、ファイルを送信する正しい方法はありますか、それともソケットを使用するほうがよいでしょうか?

WPF アプリケーション

var imageUrl = "http://127.0.0.1:18710/Home/Index";

//byte[] imageBytes = set.getImageBytes();
byte[] imb = System.Text.Encoding.UTF8.GetBytes("imagename=" + ImageName + ".png&image=" + Convert.ToBase64String(File.ReadAllBytes(ImageName + ".png")));

var imageReq = (HttpWebRequest)WebRequest.Create(imageUrl);

imageReq.Method = "POST";
imageReq.ContentType = "application/x-www-form-urlencoded";
imageReq.ContentLength = imb.Length;


using (Stream os = imageReq.GetRequestStream())
{
    os.Write(imb, 0, imb.Length);
}

ASP.NET MVC サイト

if (image != null && imagename != null)
{
    System.IO.File.WriteAllBytes(@"c:\" + imagename, Convert.FromBase64String(image));
}
4

1 に答える 1

3

エンコーディングで奇妙なことをしています。ファイル名をヘッダーとして渡す方がおそらく良いでしょう.MVC 側でファイル名を取得できます..HttpContext.Current.Request を使用します。次に、wpf アプリで記述している RequestStream を次のように変更します。

byte[] imb = File.ReadAllBytes(ImageName + ".png")));

于 2013-08-30T00:02:27.323 に答える