public async Task <ActionResult> AddAttachment([Bind(Include = "Id,TicketId,Description,MediaURL")] Attachment attachment, HttpPostedFileBase image) { if (ModelState.IsValid) { if (ImageUploadValidator.IsWebFriendly(image)) { if (ImageUploadValidator.IsImage(image) || image.FileName.Contains(".pdf") || image.FileName.Contains(".doc")) { var fileName = Path.GetFileName(image.FileName); var uniqueId = DateTime.Now.Ticks; fileName = Regex.Replace(fileName, @"[!@#$%_\s]", ""); image.SaveAs(Path.Combine(Server.MapPath("~/Uploads/"), uniqueId + fileName)); attachment.MediaURL = "/Uploads/" + uniqueId + fileName; } else { return(View()); } } attachment.AuthorId = User.Identity.GetUserId(); db.Attachments.Add(attachment); db.SaveChanges(); var ticket = db.Tickets.Find(attachment.TicketId); await NotifyDeveloper(attachment.TicketId, attachment.AuthorId, ticket.AssigneeId); return(RedirectToAction("Details", new { id = attachment.TicketId })); } return(View()); }