使用POST发送图像

时间:2013-08-29 23:18:52

标签: c# image post

我有一个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));
}

1 个答案:

答案 0 :(得分:3)

您正在使用编码做一些奇怪的事情。如果您将文件名作为标题传递,可能会更好。您可以通过使用HttpContext.Current.Request在MVC端获取文件名。然后,只需将您在wpf应用程序中编写的RequestStream更改为:

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