【问题标题】:How to override default Content-type如何覆盖默认的内容类型
【发布时间】:2021-12-09 07:13:34
【问题描述】:

我有一个最小 API ( Project Sdk="Microsoft.NET.Sdk.Web" ) 应用程序,它有一个 GET 端点,我想返回一个图像/png。

端点是:

app.MapGet("/text2img/{inputText}", (string inputText) => {
  var fileBytes = new ByteArrayContent(text2img(inputText).ToByteArray());
  var mimeType="image/png"; 
  var fileBytesArray = fileBytes.ReadAsByteArrayAsync().Result;
  return Results.File(new Microsoft.AspNetCore.Mvc.FileContentResult(fileBytesArray, mimeType).FileContents);
});

它返回正确的png图像字节,但内容类型是八位字节流:

HTTP/1.1 200 OK
Content-Length: 24975
Content-Type: application/octet-stream
Date: Fri, 22 Oct 2021 16:29:49 GMT
Server: Kestrel

如何返回正确的内容类型?

【问题讨论】:

  • 我没有使用 .net6,但我在 .net5 中使用 Response.Headers["Content-type"] = "something"; 我希望它会有所帮助。

标签: c# .net .net-6.0 minimal-apis


【解决方案1】:

Results.File(至少在最新版本中)具有contentType 的参数,您只需将字节数组和内容类型传递给它:

app.MapGet("/img", () =>
{
    var mimeType = "image/png";
    var bytes = ...
    return Results.File(bytes, contentType: mimeType);
});

【讨论】:

    猜你喜欢
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 2010-11-16
    相关资源
    最近更新 更多