You will need to write a custom page handler to stream the bytes to the client with the proper HTTP headers. You will need to decide whether to support inline viewing (open in the browser - Content-Disposition: inline
) versus external viewing using an attachment (e.g. Content-Disposition: attachment
).
Response.AddHeader("Content-Disposition", "attachment; filename=example.pdf");
If you are using ASP.NET MVC - you can leverage the FileResult
to streamline this process, but creating your own handler wouldn't be too much different.
public FileResult Download()
{
byte[] fileBytes = ...; // from FileTable
string fileName = "example.txt";
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}
The best approach to handling various MIME types (PDF, DOC, XLS) is to statically define the supported file types or dynamically read IIS and assign the appropriate Content-Type
HTTP header.
Response.ContentType = "application/pdf";