I managed to send multiple documents to my controller using the following ajax call:
var fileData = new FormData();
for (var i = 0; i < files.length; i++) {
fileData.append("UploadDocumentsInput", files[i]);
}
$.ajax({
type: "POST",
url: "/LegalEntity/UploadFiles",
async: false,
dataType: "json",
contentType: false, // Not to set any content header
processData: true, // Not to process data
data: fileData,
success: function (result, status, xhr) {
},
error: function (xhr, status, error) {
documentSuccess = false;
}
});
and in the controller, I receive them this way:
[HttpPost]
public JsonResult UploadFiles()
{
var listOfDocs = new List<UploadedFile>();
HttpFileCollectionBase files = Request.Files;
for (int i = 0; i < files.Count; i++)
{
HttpPostedFileBase file = files[i];
var inputStream = file.InputStream;
var inputStreamLength = Convert.ToInt32(inputStream.Length);
byte[] streamArray = new byte[inputStreamLength];
var strRead = inputStream.Read(streamArray, 0, inputStreamLength);
var docObject = new UploadedFile()
{
Attachment = streamArray,
FileName = file.FileName,
};
listOfDocs.Add(docObject);
}
_personService.SaveDocs(listOfDocs);
return Json(files.Count + " Files Uploaded!");
}
But also, I will need to send from my view an ID.
I have tried to include it into the data:
field and receive it as argument into my method but this doesnt seem to be working.
Every help will be much appreciated.