Open pdf in new tab

From Logic Wiki
Jump to: navigation, search


 [Route("resource/{resourceId}")]
        public async Task<IActionResult> Resource(long resourceId)
        {
            var directory = _configuration.GetSection("AppSettings")["MediaStorage"];
            Resource resource = null;
            if (resourceId != 0)
            {
                resource = await _proxy.Get<Resource>($"api/cms/resource/get/{resourceId}");
            }
            
            if (resource == null || string.IsNullOrWhiteSpace(resource.FilePath))
            {
                return null;
            }
            var resourcePath = string.Empty;
            resourcePath = $"resources\\{resource.ApplicationId}\\{resource.FilePath}";

            var path = Path.Combine(directory, resourcePath);

            var extension = Path.GetExtension(path);
            var mimeType = MimeTypeMap.GetMimeType(extension);

            if (extension == ".pdf")
            {
                var cd = new System.Net.Mime.ContentDisposition
                {
                    FileName = Path.GetFileName(path),
                    Inline = true,
                };
                Response.Headers.Add("Content-Disposition", cd.ToString());
                Response.ContentType = "application/pdf";
              //  FileStream stream = new FileStream(Path.GetFileName(path), FileMode.Open, FileAccess.Read);

                Response.Headers.Add("X-Content-Type-Options", "nosniff");

                return File(System.IO.File.ReadAllBytes(path), "application/pdf");
                
            }

            return PhysicalFile(path, mimeType, $"{resource.Title}.{extension}");
        }