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 回答