C# 使用POST发送图像
我有一个WPF应用程序和一个ASP.NETMVC站点。WPF应用程序使用Kinect捕获图像,这些图像保存为文件。我要做的是将文件从WPF应用程序发送到ASP.NETMVC站点 我尝试了以下方法,从图像文件中获取字节,并使用Base64将其转换为字符串,然后在另一端尝试将字符串转换回字节,然后再转换回文件。整个过程正常,但最后的文件已损坏且无法加载 这也是发送文件的正确方式,还是尝试使用套接字更好 WPF应用程序C# 使用POST发送图像,c#,image,post,C#,Image,Post,我有一个WPF应用程序和一个ASP.NETMVC站点。WPF应用程序使用Kinect捕获图像,这些图像保存为文件。我要做的是将文件从WPF应用程序发送到ASP.NETMVC站点 我尝试了以下方法,从图像文件中获取字节,并使用Base64将其转换为字符串,然后在另一端尝试将字符串转换回字节,然后再转换回文件。整个过程正常,但最后的文件已损坏且无法加载 这也是发送文件的正确方式,还是尝试使用套接字更好 WPF应用程序 var imageUrl = "http://127.0.0.1:18710/Ho
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));
}
你正在用编码做一些奇怪的事情。如果将文件名作为头传入,可能会更好。。您可以在MVC端提取文件名。。通过使用HttpContext.Current.Request。然后,只需将您在wpf应用程序中编写的RequestStream更改为:
byte[]imb=File.ReadAllBytes(ImageName+“.png”)代码>如何在MVC端重新组装文件?当我查看Request.Form时,它有1037个不同的键。将您的内容类型更改为“image/png”。或应用程序/八位字节流,并将参数传入索引页。。“Stream myimagestream”,从那里您应该能够保存流,无论您想保存到哪里。流。。只是一团“东西”。你不应该害怕他们-微笑-一旦你意识到。。而且大多数文件类型都可以由流的前256个字节唯一识别。。你会是一个更快乐的人。(Zip文件是256字节规则的例外..因为很多文件实际上是Zip文件..现代powerpoint文件..jar文件..现代excel文件..)仍然在Request.Form中返回相同的内容。您不需要Request.Form。如果您修改了“Index”Post方法以获取流myimagestream的参数,如下所示。。。索引(Stream myimagestream)您只需使用变量即可。