Ответ 1
Просто чтобы построить ответ @TheCodeJunkie, вы можете построить "ответ массива байтов" очень легко:
public class ByteArrayResponse : Response
{
/// <summary>
/// Byte array response
/// </summary>
/// <param name="body">Byte array to be the body of the response</param>
/// <param name="contentType">Content type to use</param>
public ByteArrayResponse(byte[] body, string contentType = null)
{
this.ContentType = contentType ?? "application/octet-stream";
this.Contents = stream =>
{
using (var writer = new BinaryWriter(stream))
{
writer.Write(body);
}
};
}
}
Затем, если вы хотите использовать синтаксис Response.AsX, это простой метод расширения сверху:
public static class Extensions
{
public static Response FromByteArray(this IResponseFormatter formatter, byte[] body, string contentType = null)
{
return new ByteArrayResponse(body, contentType);
}
}
Затем на вашем маршруте вы можете просто использовать:
Response.FromByteArray(myImageByteArray, "image/jpeg");
Вы также можете добавить процессор для использования массива байтов с согласованием содержимого, я добавил быстрый пример этого этого метода