微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.NET Core 3.1 不支持通过 Internet Explorer 中的 Swagger UI 下载 PDF 或 XLS 或 JPG 文件

如何解决.NET Core 3.1 不支持通过 Internet Explorer 中的 Swagger UI 下载 PDF 或 XLS 或 JPG 文件

我正在将 .NET Core 2.1 API 迁移到 .NET Core 3.1,但看起来不支持 Produces File 内容。我遇到了 Internet Explorer 中的 Swagger UI 以文本形式返回二进制内容而不是将其显示为 PDF 或 XLS 文件的问题。

在 2.1 中,我执行了以下操作以使其正常工作:

[HttpPost]
[Route("api/GetPdf")]
[Produces("application/pdf")]
public IActionResult GetPdf([FromBody]JObject data)
{
  FileContentResult fr = new FileContentResult(response.Documents.First().DocumentBytes,"application/pdf");
        fr.FileDownloadName = fileName;
  return fr;
 }

添加到 Statup.cs 配置服务:

c.MapType<FileStream>(() => new Schema { Type = "file",Format = "bytes[]" });

但这在 .NET Core 3.1 中不起作用。有人可以帮助如何通过 Swagger UI 返回 PDF 或 XLS 文件吗?我使用的是 Swashbuckle ASP.NET Core 5.5.1。

解决方法

发现问题,上面的代码确实有效,但由于以下原因在 IE 中不起作用: Swagger UI 不支持 Internet Explorer。来自文档:

浏览器支持

Swagger UI 适用于最新版本的 Chrome、Safari、Firefox 和 Edge。

,

您可以试试这个 https://github.com/swagger-api/swagger-ui/issues/4250 这个解决方案看起来是您问题的可行解决方案

嗨,团队, 感谢您通过重现问题快速提出建议。 我也尝试过设置 Content-Type: application/octet-stream 和 Content-Disposition: attachment。 pdf 链接已启用,单击即可下载。 感谢您的确认,Swagger-UI 不支持内联查看 PDF。

建议: 如果可能,请更新需要使用“application/octet-stream”而不是“application/pdf”的规范。 规格链接:https://swagger.io/docs/specification/describing-responses/ 在部分下:返回文件的响应

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。