2013-08-29 3 views
1

У меня есть приложение WPF и сайт ASP.NET MVC. Приложение WPF использует Kinect для захвата изображений, и они сохраняются в виде файлов. Я хочу отправить файлы из приложения WPF на сайт ASP.NET MVC.Отправить изображение с помощью POST

Я пробовал следующее, которое получает байты из файла изображения и преобразует его в строку с использованием Base64, а затем с другой стороны попытается преобразовать строку обратно в байты, а затем обратно в файл. Весь процесс работает, за исключением того, что файлы в конце повреждены и не будут загружаться.

Также является правильным способом отправки файлов, или мне будет лучше использовать сокеты?

WPF Application

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)); 
} 

ответ

3

Вы делаете некоторые странные вещи с кодировкой. Вероятно, лучше, если вы передадите имя файла в виде заголовка. Вы можете получить имя файла на стороне MVC .. с помощью HttpContext.Current.Request. Тогда просто изменить RequestStream вы пишете в вашем приложении WPF, это:

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

+0

Как я собираюсь собрать файл на стороне MVC? Когда я смотрю на Request.Form, у него есть 1037 разных ключей. – PriestVallon

+0

Измените свой Content-Type на "image/png". Или приложение/октет-поток и введите параметр, входящий на вашу индексную страницу. «Поток myimagestream», оттуда вы сможете сохранить поток, где хотите. –

+0

Поток .. это просто капля «вещи». Вы не должны их бояться .. -smiles- Как только вы это осознаете ... и что большинство типов файлов могут быть однозначно распознаны первыми 256 байтами потока .. вы станете счастливее. (Zip-файлы являются исключением из 256-байтового правила .. потому что много файлов - это действительно файлы zip .. современные файлы Powerpoint .. файлы jar .. современные файлы excel ..) –

Смежные вопросы