public async Task <ActionResult> Upload(UploadFileItemModel model) { if (!ModelState.IsValid) { return(Json(new OperationResult { Status = OperationStats.Error, Errors = GetErrors(ModelState) })); } model.Path = model.Path.Trim('/'); List <FileItem> listToAdd = new List <FileItem>(); //var rootPath = model.Path.TrimEnd('/').Remove(model.Path.LastIndexOf('/')); //FileItem sibling = await db.FileItems.FirstOrDefaultAsync(x => x.Path.Equals(rootPath)); try { var absPath = Server.MapPath(string.Concat(model.Path.Replace("ROOT", RootPath), "/", model.PostedFile.FileName)); if (System.IO.File.Exists(absPath)) { return(Json(new OperationResult { Status = OperationStats.Error, Message = string.Format(StringResources.ItemAlreadyExists, model.PostedFile.FileName) })); } model.PostedFile.SaveAs(absPath); listToAdd.Add(new FileItem { Name = model.PostedFile.FileName, MimeType = model.PostedFile.ContentType, Path = model.Path.Trim('/'), CDate = DateTime.UtcNow, MDate = DateTime.UtcNow, FileId = model.Id }); if (!listToAdd.Any()) { return(Json(new OperationResult { Status = OperationStats.Error, Message = StringResources.UnknownErrorOccurred })); } db.FileItems.AddRange(listToAdd); await db.SaveChangesAsync(); return(Json(new OperationResult { Status = OperationStats.Success, Message = string.Format(StringResources.SuccessfullyUploaded, model.PostedFile.FileName) })); } catch (Exception ex) { throw; } }
public async Task <ActionResult> Upload(UploadFileItemModel model) { if (!ModelState.IsValid) { return(Json(new OperationResult { Status = OperationStats.Error, Errors = GetErrors(ModelState) })); } model.Path = model.Path.Trim('/'); List <FileItem> listToAdd = new List <FileItem>(); FileItem sibling = await db.FileItems.FirstOrDefaultAsync(x => x.Path.Equals(model.Path)); try { var absPath = _hosting.ContentRootPath + model.Path.Replace("ROOT", RootPath).Replace("/", "\\") + "\\" + model.PostedFile.FileName; if (absPath.Contains("\\\\")) { absPath = absPath.Replace("\\\\", "\\"); } if (System.IO.File.Exists(absPath)) { return(Json(new OperationResult { Status = OperationStats.Error, Message = string.Format(StringResources.ItemAlreadyExists, model.PostedFile.FileName) })); } model.PostedFile.CopyTo(new FileStream(absPath, FileMode.Create)); //model.PostedFile.SaveAs(absPath); listToAdd.Add(new FileItem { Name = model.PostedFile.FileName, MimeType = model.PostedFile.ContentType, Path = model.Path.Trim('/'), CDate = DateTime.UtcNow, MDate = DateTime.UtcNow, FileId = sibling?.FileId }); if (!listToAdd.Any()) { return(Json(new OperationResult { Status = OperationStats.Error, Message = StringResources.UnknownErrorOccurred })); } db.FileItems.AddRange(listToAdd); await db.SaveChangesAsync(); return(Json(new OperationResult { Status = OperationStats.Success, Message = string.Format(StringResources.SuccessfullyUploaded, model.PostedFile.FileName) })); } catch (Exception ex) { return(Json(new OperationResult { Status = OperationStats.Success, Message = StringResources.CodeError })); } }