Agregue una página Generic Handler (.ashx) a su sitio web. El cuerpo de código ashx siguiente muestra cómo leer una corriente arbitraria (en este caso un archivo PNG de disco) y escribirlo en la respuesta:
using System;
using System.Web;
using System.IO;
namespace ASHXTest
{
public class GetLetter : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
// Get letter parameter from query string.
string fileName = context.Request.MapPath(string.Format("{0}.png",
context.Request.QueryString["letter"]));
// Load file from disk/database/ether.
FileStream stream = new FileStream(fileName, FileMode.Open,
FileAccess.Read);
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, buffer.Length);
stream.Close();
// Write response headers and content.
context.Response.ContentType = "image/png";
context.Response.OutputStream.Write(buffer, 0, buffer.Length);
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
Si lo desea, también puede definir la cabecera Content-Disposition
como se demuestra en La respuesta de Heinzi:
context.Response.AddHeader("Content-Disposition",
"attachment;filename=\"letter.png\"");
Entonces, ¿cómo puedo obtener la extensión de los datos binarios? – Tarik
Y podría proporcionar un código de muestra, porque sabía lo que dijo, pero en el código puedo necesitar un ejemplo :( – Tarik
no hay forma de hacerlo. La mejor manera sería almacenar la extensión en la base de datos. –