private async Task <string> CreateAttachmentAsync(RequestCreationBindingModel model, Request request) { string failedAttachments = string.Empty; foreach (var attachment in model.Attachments) { var extension = attachment.FileName.Split('.').Last(); var isAllowedFileFormat = FileFormatValidator.IsValidFormat(extension); if (!isAllowedFileFormat) { failedAttachments += Environment.NewLine; failedAttachments += $"{attachment.FileName} failed to upload because the file format is forbidden."; continue; } string currentDirectory = Directory.GetCurrentDirectory(); string destination = currentDirectory + "/Files" + "/Requests/" + model.Subject; Directory.CreateDirectory(destination); string path = Path.Combine(destination, attachment.FileName); var fileStream = new FileStream(path, FileMode.Create); using (fileStream) { await attachment.CopyToAsync(fileStream); } this.dbContext.RequestAttachments.Add(new RequestAttachment { FileName = attachment.FileName, PathToFile = path, RequestId = request.Id }); } return(failedAttachments); }
public async Task <IActionResult> OnPost() { if (!ModelState.IsValid) { return(BadRequest()); } var solution = mapper.Map <Solution>(Model); solution.AuthorId = this.userManager.GetUserId(User); this.dbContext.Solutions.Add(solution); if (Model.Attachment != null) { var extension = Model.Attachment.FileName.Split('.').Last(); var isAllowedFileFormat = FileFormatValidator.IsValidFormat(extension); if (!isAllowedFileFormat) { this.TempData.Put("__Message", new MessageModel() { Type = MessageType.Danger, Message = "Forbidden file type!" }); return(this.Page()); } await CreateAttachmentAsync(Model, solution); } this.dbContext.SaveChanges(); this.TempData.Put("__Message", new MessageModel() { Type = MessageType.Success, Message = "Solution created successfully" }); return(RedirectToPage("/Index")); }