/// <summary> /// Get file content /// </summary> /// <param name="target">Target</param> /// <param name="isDownload">Download file</param> /// <returns>Response result</returns> FileCommandResult IConnectorDriver.File(string target, bool isDownload) { // Parse path var fullPath = ParsePath(target); // Create command result var commandResult = new FileCommandResult( fullPath.Info.FullName, MimeTypes.GetMimeType(fullPath.Info.Name), isDownload ); // Check if path is directory if (fullPath.IsDirectory()) { // Cannot download directory, must be a file commandResult.SetObjectNotFileError(); // End processing return(commandResult); } // Check if path exists if (!fullPath.Info.Exists) { // Doesn't exist commandResult.SetFileNotFoundError(); // End processing return(commandResult); } // Check if access is allowed if (fullPath.Root.IsShowOnly) { // Access denied, volume is for show only commandResult.SetAccessDeniedError(); // End processing return(commandResult); } // Return result return(commandResult); }
public static IActionResult FileCommandResultToActionResult(this Controller _controller, FileCommandResult commandResult) { if (commandResult.IsSuccess) { var video = (Domain.Entities.Video)commandResult.Data; return(new FileContentResult(commandResult.File.ToArray(), "application/octet-stream") { FileDownloadName = $"{video.FileName}", }); } else { return(_controller.BadRequest(commandResult)); } }