// Upload file public async Task <IActionResult> Upload() { if (Files.Count > 0) // DN { var lang = new Lang(); var form = new HttpForm(); var name = form.GetValue("id"); UploadTable = form.GetValue("table"); var folder = UploadTempPath(name, UploadTable); var token = form.GetValue(Config.TokenName); var exts = form.GetValue("exts"); var extList = exts.Split(','); if (!Empty(Config.UploadAllowedFileExtensions)) { var allowedExtList = new List <string>(Config.UploadAllowedFileExtensions.Split(',')); exts = String.Join(",", extList.Where(ext => allowedExtList.Contains(ext, StringComparer.OrdinalIgnoreCase))); // Make sure exts is a subset of Config.UploadAllowedFileExtensions if (Empty(exts)) { exts = Config.UploadAllowedFileExtensions; } } if (Empty(exts)) { exts = @"\w+"; } var filetypes = @"\.(" + exts.Replace(",", "|") + ")$"; var maxsize = form.GetInt("maxsize"); var maxfilecount = form.GetInt("maxfilecount"); var filename = form.GetUploadFileName(name); // Skip if no file uploaded if (Empty(filename)) { return(Controller.BadRequest("Missing file name")); } if (Config.UploadConvertAccentedChars) { filename = HtmlEncode(filename); filename = Regex.Replace(filename, @"&([a-zA-Z])(uml|acute|grave|circ|tilde|cedil);", "$1"); filename = HtmlDecode(filename); } var filetype = form.GetUploadFileContentType(name); var filesize = form.GetUploadFileSize(name); var value = await form.GetUploadFileData(name); // Check file types if (!Regex.IsMatch(filename, filetypes, RegexOptions.IgnoreCase)) { var fileerror = lang.Phrase("UploadErrMsgAcceptFileTypes"); return(OutputJson("files", new List <object[]> { new object[] { name, filename, filetype, filesize, token, fileerror } })); } // Check file size if (maxsize < filesize) { var fileerror = lang.Phrase("UploadErrMsgMaxFileSize"); return(OutputJson("files", new List <object[]> { new object[] { name, filename, filetype, filesize, token, fileerror } })); } // Check max file count var filecount = FolderFileCount(folder); if (maxfilecount > 0 && maxfilecount <= filecount) { var fileerror = lang.Phrase("UploadErrMsgMaxNumberOfFiles"); return(OutputJson("files", new List <object[]> { new object[] { name, filename, filetype, filesize, token, fileerror } })); } // Delete all files in directory if replace var version = Config.UploadThumbnailFolder; if (form.GetBool("replace")) { CleanPath(folder, false); } await SaveFile(folder, filename, value); folder = PathCombine(folder, version, true); var w = Config.UploadThumbnailWidth; var h = Config.UploadThumbnailHeight; ResizeBinary(ref value, ref w, ref h); await SaveFile(folder, filename, value); return(OutputJson("files", new List <object[]> { new object[] { name, filename, filetype, filesize, token } })); } return(new EmptyResult()); }