我正在尝试使用MVC进行上传附件功能。实际执行上传/保存附件的方法是期望HttpPostedFileBase类型。
public virtual string Upload(HttpPostedFileBase fileName)
{
//Code to upload/save attachment.
}
我的问题是“fileName”作为字符串从UI传递。如何将字符串(文件路径名称)转换为我的上传方法可以使用的内容。
提前致谢。
答案 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"