3

我正在尝试使用 MVC 上传附件功能。我实际执行上传/保存附件的方法需要一个 HttpPostedFileBase 类型。

public virtual string Upload(HttpPostedFileBase fileName) 
{
     //Code to upload/save attachment.
}

我的问题是“fileName”作为字符串从 UI 传递。如何将字符串(文件路径名)转换为我的 Upload 方法可以使用的内容。

提前致谢。

4

4 回答 4

4

正如其他人所提到的,您的表单应如下所示:

<form id="form_UploadFile" action="" method="post" enctype="multipart/form-data">
  <label for="file">Filename:</label>
  <input type="file" name="file" id="file" />
</form>

然后,正如您提到的,您尝试通过 ajax 发布,您可以使用 jQuery serialize()序列化要推送到控制器的 formData。

$('#form_UploadFile').serialize();
于 2012-07-27T19:19:40.193 回答
3

您不能只从 UI 传递一个字符串,您需要从input type="file".

于 2012-07-27T19:07:06.853 回答
2

你必须让你的<form>标签看起来像这样:

<form action="" method="post" enctype="multipart/form-data">

然后您将收到适当的HttpPostedFileBase对象

关于所有细节,您可以参考这篇文章。

更新

使用 ajax 提交表单没有任何区别:

@using (Ajax.BeginForm("YourActionName", null, new AjaxOptions { UpdateTargetId = "YourTargetId" }, new { enctype = @"multipart/form-data" }))
{
    //Your inputs here
}
于 2012-07-27T19:10:37.920 回答
2

你记得使用详细Html.BeginForm方法吗?

    @using (Html.BeginForm("Attach", "File", FormMethod.Post, new { enctype = "multipart/form-data" })) {
    }

重要的部分是enctype="multipart/form-data"

于 2012-07-27T19:11:52.917 回答