更新时间:2023-02-25 13:26:02
您需要在控制器操作参数中使用 HttpPostedFileBase
来获取已经发布的字段。
请请阅读Phil Haack撰写的文章。
I have the same issue
@using (Html.BeginForm("CreateRequest", "SupportRequest", FormMethod.Post, new { id = "frmStemplate", enctype = "multipart/form-data" }))
{
<td><input type="file" name="FirstFile" id="FirstFile" class="button" />
<input type="button" class="button" id="FirstFileupload" value="upload" onclick="Javascript:DocumentUpload();"/>
}
<script language="javascript" type="text/javascript">
function DocumentUpload()
{
var BrowseFile = $('#FirstFile').val();
if (BrowseFile != null && BrowseFile != "") {
alert(BrowseFile);
$.ajax({
type: 'POST',
dataType: 'json',
url: '@Url.Content("~/SupportRequest/UploadFiles")?fileElementId=' + BrowseFile,
success: function (data) {
alert('Hi'); //debugger;
if (data.Result == "SUCCESS") {
alert('Hi');
}
else {
ShowInfo('Document Uploaded Successfully');
}
}
});
}
}
</script>
On the controller side, I have:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UploadFiles(string fileElementId, FormCollection formColl)
{
var FirstFile = Request.Files;
foreach (string upload in Request.Files)
{
if (!Request.Files[upload].HasFile()) continue;
string path = AppDomain.CurrentDomain.BaseDirectory + "uploads/";
string filename = Path.GetFileName(Request.Files[upload].FileName);
Request.Files[upload].SaveAs(Path.Combine(path, filename));
}
return Json(new { Filename = "" });
}
But my Request.Files
is always null
.
I tried several things, like changing the code to Request.Files["FirstFile"]
, etc. Each time, the file collection is empty.
You need to use HttpPostedFileBase
in controller action parameters inorder to get the filedata that you have posted.
Please read this full article by Phil Haack