Skip to content

Instantly share code, notes, and snippets.

@scottsauber
Last active February 24, 2019 20:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save scottsauber/6382aece63065679991a321d036c94b7 to your computer and use it in GitHub Desktop.
Save scottsauber/6382aece63065679991a321d036c94b7 to your computer and use it in GitHub Desktop.
[Route("File")]
public class FileController : Controller
{
private readonly IFileService _fileService;
public FileController(IFileService fileService)
{
_fileService = fileService;
}
[HttpPost("Download/{id:guid}")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Download(Guid id)
{
// Retrieve some file from some service
ApplicationFile file = await _fileService.GetFileAsync(id);
string extension = Path.GetExtension(file.NameWithExtension);
string contentType = "";
switch (extension)
{
case ".pdf":
contentType = "application/pdf";
break;
case ".xslx":
contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
break;
case ".docx":
contentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
break;
default:
throw new Exception($"Unknown extension {extension}");
}
return File(file.Contents, contentType);
}
}
public class ApplicationFile
{
public string NameWithExtension { get; set; }
public byte[] Contents { get; set; }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment