将图像上传到ajax中的服务器

时间:2013-04-11 05:17:49

标签: asp.net asp.net-mvc asp.net-mvc-3

以下是我的表格

<form id="postProblemForm" action="/Problems/Post"  method="post">
<input type="text" id="problemSubject" name="problemSubject" class="inp-form"/>
<input type="file" id="uploadFile" name="uploadFile"/>
<textarea rows="" cols="" class="form-textarea" id="problemDescription" name="problemDescription"></textarea>
</form>

我必须将此表格发送给控制器。控制器代码是

[HttpPost]

        public void Post(FormCollection form) 
        {
            string subject = form["problemSubject"];
            string description = form["problemDescription"];
            HttpPostedFileBase photo = Request.Files["uploadFile"];

        }

我可以轻松获得“problemSubject”和“problemDescription”值。但不知道如何上传图像并将其保存在服务器端。我想保存在“〜/ ProblemImages”中。请帮助。

1 个答案:

答案 0 :(得分:0)

您无法通过FormCollection将文件传输到控制器,您需要使用以下内容:

        [HttpPost]
        public ActionResult Save(IEnumerable<HttpPostedFileBase> attachments)
        {
            // The Name of the Upload component is "attachments" 
            foreach (var file in attachments)
            {
                // Some browsers send file names with full path. This needs to be stripped.
                var fileName = Path.GetFileName(file.FileName);
                var physicalPath = Path.Combine(Server.MapPath("~/App_Data"), fileName);

                file.SaveAs(physicalPath);
            }
            // Return an empty string to signify success
            return Content("");
        }

而且你在没有获得任何插件帮助的情况下这样做也不是一个好主意,我使用了一些插件,我发现Kendo UI上传插件很好,这里有一个链接如何工作:

http://demos.kendoui.com/web/upload/async.html

你可以在这里找到示例项目: http://www.kendoui.com/forums/ui/upload/upoad-with-mvc.aspx