【发布时间】:2020-02-27 02:17:38
【问题描述】:
我需要使用 IHttpActionResult 而不是 HttpResponseMessage 从 WebApi 返回图像。如何实现以及需要传递哪些接受和内容类型标头?
谢谢!!
【问题讨论】:
标签: asp.net-web-api2
我需要使用 IHttpActionResult 而不是 HttpResponseMessage 从 WebApi 返回图像。如何实现以及需要传递哪些接受和内容类型标头?
谢谢!!
【问题讨论】:
标签: asp.net-web-api2
我实际上是在寻找一种解决方案,通过 web api 发送驻留在互联网上的图像,但我正在使用以下代码从我的 web api 返回本地缩略图;
[HttpGet]
[Route("thumbnail/{userId}/{fileName}")]
public IHttpActionResult GetThumbnail()
{
var mediaRoot = System.Web.HttpContext.Current.Server.MapPath("~/media");
var imgPath = Path.Combine(mediaRoot, "images", userId, "thumbnail", fileName);
var fileInfo = new FileInfo(imgPath);
return !fileInfo.Exists
? (IHttpActionResult)NotFound()
: new FileResult(fileInfo.FullName);
}
希望对你有帮助
编辑:您应该创建一个自定义 IHttpActionResult 来重新调整图像,
似乎我已经创建了一个自定义 IHttpActionResult 来返回图像,这是我从 > Custom IHttpActionResult 获得此代码的帖子
【讨论】:
这是一种基本的方式:
[HttpGet]
[Route("test")]
public IHttpActionResult GetImageTest()
{
var stream = File.OpenRead(@"C:\picture.jpg");
var response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StreamContent(stream);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpg");
response.Content.Headers.ContentLength = stream.Length;
return ResponseMessage(response);
}
【讨论】: