无法在控制器内的FormCollection对象中接收文件数据

时间:2013-11-14 21:09:45

标签: c# jquery .net asp.net-mvc-4

我有以下标记:

<form id="did" enctype="multipart/form-data">
    <textarea name="description">Text</textarea>
    <input name="files" id="files" type="file" accept="doc,pdf" />
    ...
</form>

在控制器中它是这样的:

  public int Edit_Submit(FormCollection oForm)
    {

            var attachedFiles = oForm["files"];
            var description= oForm["description"];
            ....
    }

我通过jQuery发布表单,如下所示:

var formInfo = $("#did").serialize();
    $.post('../../data/SubmitEdit', formInfo, function (serverResult) {
   ...

我正在接收其他数据,但null中始终attachedFiles

通过这种方式不可能吗?我做错了什么,请帮忙。

2 个答案:

答案 0 :(得分:0)

我认为您上传的文件不在您的表单集中。

尝试类似这样的事情:

<form id="did" action="../../data/SubmitEdit" enctype="multipart/form-data">
    <textarea name="description">Text</textarea>
    <input name="files" id="files" type="file" accept="doc,pdf" />
    ...
</form>

[HttpPost]
public ActionResult SubmitEdit(FormCollection oForm, HttpPostedFileBase files) {
     ...

确保HttpPostedFileBase名称与id

input[type="file"]相同

答案 1 :(得分:0)

$.post()方法本质上是一个ajax调用,或者在更多技术术语中,使用XMLHttpRequest对象。

通过XMLHttpRequest对象,您无法将文件流发送回服务器。虽然有一些方法可以模仿。

此外,在服务器端,您应该使用HttpPostedFileBase类来将文件流恢复到服务器。