Hello,
When you select a file to be uploaded, it is not being sent to the controller to be saved to a directory or SQL Server. When the controller Async_MedicalCertificateSave is called the parameter files always has 0 count.
Thanks in advance for your help.
My code is as follows:
HTML
@(Html.Kendo().Upload() .Name("Popupfiles") .Multiple(false) .Async(a => a .Save("Async_MedicalCertificateSave", "SAC") .Remove("Async_MedicalCertificateRemove", "SAC") .AutoUpload(true) ) .Events(events => events .Upload("OnUpload") .Select("onSelect") ))
JAVSCRIPT
function OnUpload(e) { var cboStudent = $("#StudentId").data("kendoMultiColumnComboBox"); e.data = { StudentId: cboStudent.value() };}function onSelect(e) { document.getElementById("OriginalFilename").value = getFileInfo(e);}
CONTROLLER
public async Task<ActionResult> Async_MedicalCertificateSave(IEnumerable<IFormFile> files, int StudentId){ ccwFormsModel db = new ccwFormsModel(); // The Name of the Upload component is "files" if (files != null) { foreach (var file in files) { var filetype = file.ContentType; var fileContent = ContentDispositionHeaderValue.Parse(file.ContentDisposition); //var filetype = fileContent.DispositionType; string dt = DateTime.Now.ToString("yyyyMMdd_HHmm"); string extension = Path.GetExtension(fileContent.FileName.ToString().Trim('"')); var fileName = StudentId.ToString() + "_MedicalCert_" + dt + extension; var physicalPath = Path.Combine(HostingEnvironment.WebRootPath, "App_Data", fileName); using (var fileStream = new FileStream(physicalPath, FileMode.Create)) { var objfiles = new TmpFileUpload() { TmpFileId = 0, StudentId = StudentId, Filename = fileName, OriginalFilename = file.FileName, FileType = filetype }; using (var target = new MemoryStream()) { file.CopyTo(target); objfiles.UploadedFile = target.ToArray(); } db.TmpFileUploads.Add(objfiles); db.SaveChanges(); } } } // Return an empty string to signify success return Content("");}public ActionResult Async_MedicalCertificateRemove(string[] fileNames){ // The parameter of the Remove action must be called "fileNames" ccwFormsModel db = new ccwFormsModel(); if (fileNames != null) { foreach (var fullName in fileNames) { var fileName = Path.GetFileName(fullName); var physicalPath = Path.Combine(HostingEnvironment.WebRootPath, "App_Data", fileName); TmpFileUpload lst = db.TmpFileUploads.FirstOrDefault(a => a.OriginalFilename.Equals(fileName)); db.TmpFileUploads.Remove(lst); db.SaveChanges(); } } // Return an empty string to signify success return Content("");}