public async Task <IActionResult> UploadFile(Guid todoId, IFormFile file) { var user = await _userManager.GetUserAsync(User); if (user == null) { _logger.LogError($"Unknown user tried creating an item."); return(Unauthorized()); } if (todoId == Guid.Empty) { _logger.LogError($"Given todoId is empty."); return(BadRequest()); } var item = await _todoService.GetItemAsync(todoId); if (item == null) { _logger.LogError($"Item with id {todoId} not found."); return(NotFound()); } if (file == null || file?.Length == 0) { _logger.LogError($"File is null or empty."); return(BadRequest(typeof(IFormFile))); } var path = todoId + "//" + file.FileName; await _fileStorageService.CleanDirectoryAsync(todoId.ToString()); var saved = await _fileStorageService.SaveFileAsync(path, file.OpenReadStream()); if (!saved) { return(BadRequest("Couldn't create or replace file")); } var succeeded = await _todoService.SaveFileAsync(todoId, user, path, file.Length); if (!succeeded) { _logger.LogError("Couldn't create or replace file."); return(BadRequest("Couldn't create or replace file.")); } return(CreatedAtAction(nameof(GetItemById), new { Id = todoId }, item)); }
public async Task <IActionResult> UploadFile([FromRoute] Guid todoId, IFormFile file) { var currentUser = await _userManager.GetUserAsync(User); if (currentUser == null) { return(Challenge()); } if (todoId == null || todoId == Guid.Empty) { return(BadRequest()); } if (file == null || file?.Length == 0) { return(BadRequest(typeof(IFormFile))); } var path = todoId + "//" + file.FileName; await _fileStorageService.CleanDirectoryAsync(todoId.ToString()); var saved = await _fileStorageService.SaveFileAsync(path, file.OpenReadStream()); if (!saved) { return(BadRequest("Couldn't create or replace file")); } var succeeded = await _todoItemService.SaveFileAsync(todoId, currentUser, path, file.Length); if (!succeeded) { return(BadRequest("Couldn't create or replace file")); } return(RedirectToAction("Details", new { id = todoId })); }