将字符串转换为HttpPostedFileBase

时间:2012-07-27 19:03:44

标签: c# .net asp.net-mvc asp.net-mvc-3 file

我正在尝试使用MVC进行上传附件功能。实际执行上传/保存附件的方法是期望HttpPostedFileBase类型。

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

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

提前致谢。

4 个答案:

答案 0 :(得分: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();

答案 1 :(得分:3)

您无法从用户界面传递字符串,您需要从input type="file"上传文件。

答案 2 :(得分:2)

您必须将<form>标记看起来像这样:

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

然后您将收到正确的HttpPostedFileBase对象

关于所有细节,您可以参考此article

<强>更新

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

@using (Ajax.BeginForm("YourActionName", null, new AjaxOptions { UpdateTargetId = "YourTargetId" }, new { enctype = @"multipart/form-data" }))
{
    //Your inputs here
}

答案 3 :(得分:2)

您还记得使用详细的Html.BeginForm方法吗?

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

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