Bir dosyayı daha "genel" bir şekilde indirmenin basit bir yolu olup olmadığını merak ediyordum. Bunu ben buldum.
Bu ActionResult, bir denetleyici çağrısından bir IHttpActionResult. Dosya byte[] Content,. Gerekirse onu bir akışa dönüştürebilirsiniz.
Bunu bir veritabanının varbinary sütununda depolanan dosyaları döndürmek için kullandım.
public class FileHttpActionResult : IHttpActionResult
{
public HttpRequestMessage Request { get; set; }
public string FileName { get; set; }
public string MediaType { get; set; }
public HttpStatusCode StatusCode { get; set; }
public byte[] Content { get; set; }
public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
{
HttpResponseMessage response = new HttpResponseMessage(StatusCode);
response.StatusCode = StatusCode;
response.Content = new StreamContent(new MemoryStream(Content));
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
response.Content.Headers.ContentDisposition.FileName = FileName;
response.Content.Headers.ContentType = new MediaTypeHeaderValue(MediaType);
return Task.FromResult(response);
}
}