I am writing a C # ASP.Net MVC application to send messages to another server. I use a common handler to process published files from client to server. But in my handler System.Web.HttpContext.Current.Request.Files is always empty (0 count).
Form Code:
@model ITDB102.Models.UploadFileResultsModels
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div>
<h1>Upload File</h1>
<form id="file-form" action="/Files/UploadFile" method="post" data-ajax="false" enctype="multipart/form-data">
<div><input type="file" id="FilePath" name="FilePath"/>
<button type="submit">Send File</button></div>
</form>
</div>
@section scripts{
<script src="~/Scripts/jquery-1.10.2.js"></script>
<script type="text/javascript">
var files;
var form = document.getElementById('file-form');
$('input[type=file]').on('change', prepareUpload);
function prepareUpload(event) {
files = $('#FilePath').get(0).files;
}
form.onsubmit = function (event) {
uploadFiles(event);
}
function uploadFiles(event) {
event.stopPropagation();
event.preventDefault();
var data = new FormData();
if (files.lenght > 0)
{
data.append('UploadedFiles', files[0], file[0].name);
}
var xhr = new XMLHttpRequest();
xhr.open('POST', '/Files/UploadFile',false);
xhr.setRequestHeader("Content-Type", files.type);
xhr.send(data);
}
</script>
}
Handler:
[HttpPost]
public virtual ActionResult UploadFile()
{
HttpPostedFile myFile = System.Web.HttpContext.Current.Request.Files["UploadedFiles"];
bool isUploaded = false;
string message = "File upload failed";
if (myFile != null && myFile.ContentLength != 0)
{
string pathForSaving = Server.MapPath("~/Uploads");
if (this.CreateFolderIfNeeded(pathForSaving))
{
try
{
myFile.SaveAs(Path.Combine(pathForSaving, myFile.FileName));
isUploaded = true;
message = "File uploaded successfully!";
}
catch (Exception ex)
{
message = string.Format("File upload failed: {0}", ex.Message);
}
}
}
return Json(new { isUploaded = isUploaded, message = message }, "text/html");
}
#region Private Methods
private bool CreateFolderIfNeeded(string path)
{
bool result = true;
if (!Directory.Exists(path))
{
try
{
Directory.CreateDirectory(path);
}
catch (Exception)
{
result = false;
}
}
return result;
}
#endregion
Please help me. Thank.
source
share