我正在尝试使用 MVC 上传附件功能。我实际执行上传/保存附件的方法需要一个 HttpPostedFileBase 类型。
public virtual string Upload(HttpPostedFileBase fileName)
{
//Code to upload/save attachment.
}
我的问题是“fileName”作为字符串从 UI 传递。如何将字符串(文件路径名)转换为我的 Upload 方法可以使用的内容。
提前致谢。
我正在尝试使用 MVC 上传附件功能。我实际执行上传/保存附件的方法需要一个 HttpPostedFileBase 类型。
public virtual string Upload(HttpPostedFileBase fileName)
{
//Code to upload/save attachment.
}
我的问题是“fileName”作为字符串从 UI 传递。如何将字符串(文件路径名)转换为我的 Upload 方法可以使用的内容。
提前致谢。
正如其他人所提到的,您的表单应如下所示:
<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();
您不能只从 UI 传递一个字符串,您需要从input type="file"
.
你必须让你的<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
}
你记得使用详细Html.BeginForm
方法吗?
@using (Html.BeginForm("Attach", "File", FormMethod.Post, new { enctype = "multipart/form-data" })) {
}
重要的部分是enctype="multipart/form-data"