public ActionResult UploadFile(int?parentId) { UploadDbFileModel model; if (parentId.HasValue) { File parent = _fileService.GetFileById(parentId.Value); if (parent == null) { return(NotFoundView()); } if (!UserIsAllowedToCrud(parent)) { return(AccessDeniedView()); } ViewBag.Parent = parent; model = new UploadDbFileModel { ParentId = parent.Id }; } else { model = new UploadDbFileModel(); } ViewBag.AccessModes = new SelectList(new Dictionary <short, string> { { (short)AccessMode.Any, AccessMode.Any.ToLocalizedString() }, { (short)AccessMode.None, AccessMode.None.ToLocalizedString() }, { (short)AccessMode.OnlyAuthenticated, AccessMode.OnlyAuthenticated.ToLocalizedString() } }, "Key", "Value"); return(View(model)); }
public ActionResult UploadFile(UploadDbFileModel model) { ViewBag.AccessModes = new SelectList(new Dictionary <short, string> { { (short)AccessMode.Any, AccessMode.Any.ToLocalizedString() }, { (short)AccessMode.None, AccessMode.None.ToLocalizedString() }, { (short)AccessMode.OnlyAuthenticated, AccessMode.OnlyAuthenticated.ToLocalizedString() } }, "Key", "Value", model.AccessMode); if (!ModelState.IsValid) { ModelState.AddModelError("", ValidationResources.InvalidState); return(View(model)); } if (model.ParentId.HasValue) { File parent = _fileService.GetFileById(model.ParentId.Value); if (parent == null) { return(NotFoundView()); } if (!UserIsAllowedToCrud(parent)) { return(AccessDeniedView()); } ViewBag.Parent = parent; } if (string.IsNullOrWhiteSpace(model.FileName)) { model.FileName = model.PostedFile.FileName; } const string extensions = ".7z|.aiff|.asf|.avi|.bmp|.csv|.doc|.docx|.fla|.flv|.gif|.gz|.gzip|.jpeg|.jpg|.mid|.mov|.mp3|.mp4|.mpc|.mpeg|.mpg|.ods|.odt|.pdf|.png|.ppt|.pxd|.qt|.ram|.rar|.rm|.rmi|.rmvb|.rtf|.sdc|.sitd|.swf|.sxc|.sxw|.tar|.tgz|.tif|.tiff|.txt|.vsd|.wav|.wma|.wmv|.xls|.xml|.zip"; if (Path.GetExtension(model.FileName) == "") { model.FileName += Path.GetExtension(model.PostedFile.FileName); } if (model.ContentLength == 0 || extensions.Split('|').All(e => string.Compare(e, Path.GetExtension(model.FileName), StringComparison.OrdinalIgnoreCase) != 0)) { ModelState.AddModelError("", ValidationResources.SelectedFileIsInvalid); return(View(model)); } var file = new File { Uploader = _webHelper.GetCurrentUser(HttpContext), AccessModeShort = model.AccessMode, CreateDate = DateTime.UtcNow, Name = model.FileName, ContentType = model.ContentType, Size = model.ContentLength, IsPublished = true, ParentId = model.ParentId }; _fileService.SaveFile(file); bool isSaved; try { isSaved = _unitOfWork.SaveChanges() > 0; } catch { isSaved = false; } if (isSaved) { Logger.SaveLog(new CreateFileProvider(file)); string targetPath = Server.MapPath(Constants.UploadsUrl); UploadUtilities.Save(model.PostedFile, targetPath, file.Guid.ToString()); return(RedirectToAction("List", new { file.ParentId, page = 1 })); } ModelState.AddModelError("", ValidationResources.UploadFileFailure); return(View(model)); }