Пока что у меня сложилось впечатление, что APB Dynami c Контроллеры Api, сгенерированные для ApplicationService, не имеют соглашения о создании действий Api, возвращающих FileStreamResult-s.
Итак, для загрузки файлов из Api на основе APB я бы вручную создал Controller для этой цели введите требуемый сервис, который будет возвращать массив Stream или byte [].
[Route("api/[controller]/[action]")]
public class ImageController: AbpController
{
private readonly IImageStore _imageStore;
public ImageController(IImageStore imageStore)
{
_imageStore = imageStore;
}
[HttpGet]
[FileResultContentType("image/jpeg")]
public async Task<FileStreamResult> GetImageStream(string imageId)
{
Stream imageStream = await _imageStore.GetImage(imageId);
imageStream.Seek(0, SeekOrigin.Begin);
var contentDisposition = new ContentDispositionHeaderValue("attachment");
contentDisposition.SetHttpFileName($"{imageId}.jpg");
Response.Headers.Add(HeaderNames.ContentDisposition, contentDisposition.ToString());
return new FileStreamResult(imageStream, "image/jpeg");
}
}
Обратите внимание на один важный атрибут, чтобы он хорошо работал с nswag FileResultContentType
. Для получения дополнительной информации обратитесь к этому сообщению: