2017-02-15 1 views
0

Я загрузив XML и размещение его на моем действии method.At верхней части полученного файла есть информация ------ WebKitFormBoundarytuARn4Bf71AoeFqG Content-Disposition: формы-данные; Name = "файл"; имя файла = "samplexmp.xml" Content-Type: Текст/XML из-за которого я не могу загрузить его на XDocument.This мой кодAsp Mvc Xml Загрузить

public ActionResult PostXml() 
    { 
     string xml = ""; 
     if (Request.InputStream != null) 
     { 
      StreamReader stream = new StreamReader(Request.InputStream); 
      string x = stream.ReadToEnd(); 
      xml = HttpUtility.UrlDecode(x); 
      var xmldocument = XDocument.Parse(xml);//Exception (Invalid data at the root) 
     } 
     return View(); 
    } 

Это мой взгляд

@using (Html.BeginForm("PostXml", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
    input type="file" name="file" 
     input type="submit" value="Upload" 

} 

Как может Я удаляю дополнительные данные?

+1

Я не думаю, что вы хотите быть чтение входного потока все. и ваш метод действий выглядит некорректно. Посмотрите http://rachelappel.com/2015/04/02/upload-and-download-files-using-asp-net-mvc/ – Fran

+0

Спасибо, Fran. Он работал. – sqlcte

ответ

1

Вы не хотите читать весь поток, потому что он является многочастным и будет иметь границы частей, записанные во весь поток.

правильный способ чтения загруженного файла в MVC является

[HttpPost] 
public ActionResult Upload(HttpPostedFileBase file) 
{ 
    try 
    { 
     if (file.ContentLength > 0) 
     { 
      var fileName = Path.GetFileName(file.FileName); 
      var path = Path.Combine(Server.MapPath("~/App_Data/Images"), fileName); 
      file.SaveAs(path); 
     } 
     ViewBag.Message = "Upload successful"; 
     return RedirectToAction("Index"); 
    } 
    catch 
    { 
     ViewBag.Message = "Upload failed"; 
     return RedirectToAction("Uploads"); 
    } 
} 

из этой статьи http://rachelappel.com/2015/04/02/upload-and-download-files-using-asp-net-mvc/