public IActionResult GetFile(string fileNameAndExtension) { if (!_cacheService.TryGetFile(fileNameAndExtension, out var videoInfo) || !System.IO.File.Exists(PathHelper.GenerateFilePath(videoInfo.FileName))) { return(NotFound()); } string path = PathHelper.GenerateFilePath(videoInfo.FileName); string extension = Path.GetExtension(fileNameAndExtension); string fileName = _metaDataService.ConstructFilenameFromMetadata(path, extension) ?? videoInfo.FileName; var cd = new System.Net.Mime.ContentDisposition { // FileName = WebUtility.UrlEncode(fileName), FileName = ToValidASCIIString(fileName), Inline = false, // Have it as attachment to force the browser to download it }; Response.Headers.Add("Content-Disposition", cd.ToString()); return(PhysicalFile(PathHelper.GenerateFilePath(videoInfo.FileName), "audio/mpeg")); }