使用XMLHttpRequest我将文件发送到MVC 3控制器方法。我怎样才能获得文件的内容?

时间:2012-12-05 14:22:20

标签: asp.net-mvc xmlhttprequest

我这样做:

 xhr.open('post', '/Fish/Create', true);
 xhr.send(file);

这会产生一个HTTP帖子,它会命中我的控制器方法,并且文件的内容会被发布到它(正如我在fiddler中看到的那样)。

如何从Request对象中获取内容?

对于奖励积分,我想知道你是否可以使用标题或获取HttpPostedFileBase对象。我可以执行类似xhr.setRequestHeader("X-File-Name", "file");的操作,然后在控制器方法中接受object file,但我无法确定文件的类型,或者它是否从流中正确创建它。

我无法使用FormData,因为它在IE9中不受支持。

2 个答案:

答案 0 :(得分:3)

在控制器操作中放置HttpPostedFileBase类型的参数,如下所示:

 public ActionResult PostFile(HttpPostedFileBase httpPostedFile)
 {
     var stream  = httpPostedFile.InputStream;
 }

答案 1 :(得分:2)

试试这个

public JsonResult UploadPure()
   {
     string fileName = Request.Headers["X-File-Name"];
     string fileType = Request.Headers["X-File-Type"];
     int fileSize = int.Parse(Request.Headers["X-File-Size"]);
     System.IO.Stream fileContent = Request.InputStream;
     System.IO.FileStream fileStream = System.IO.File.Create(Server.MapPath("~/") + fileName);
     fileContent.Seek(0, System.IO.SeekOrigin.Begin);
     fileContent.CopyTo(fileStream);
     fileStream.Dispose();

     return Json("Uploaded files");
 }

这对我有用,了解更多信息 http://ajeeshms.in/Blog/Article/1/upload-files-using-ajax-in-asp-mvc 我希望它有所帮助