📜  c# web api 返回图片文件 - C# (1)

📅  最后修改于: 2023-12-03 14:39:44.523000             🧑  作者: Mango

C# Web API 返回图片文件

在 Web 应用程序中,经常需要返回图片文件给客户端展示。而使用 C# Web API 返回图片文件也非常容易,下面将为大家详细介绍。

实现步骤
  1. 首先,需要在 Web API 项目的控制器中添加一个返回图片的方法。该方法需要使用 FileStreamResult 类型作为返回类型,如下所示:
[HttpGet]
[Route("api/image/{imageName}")]
public IActionResult GetImage(string imageName)
{
    var imagePath = Path.Combine(_hostingEnvironment.ContentRootPath, "Images", imageName);

    var stream = new FileStream(imagePath, FileMode.Open);

    return new FileStreamResult(stream, "image/jpeg");
}

以上方法定义了一个 GetImage 方法,方法接受一个 imageName 参数,该参数代表要获取的图片的名称。然后,该方法使用 Path.Combine 方法合并了图片文件的路径和文件名,并使用 FileStream 打开了这个文件。

最后,使用 FileStreamResult 类型返回了该文件流。

  1. 接着,需要配置路由,以便客户端可以访问到图片文件。可以在 Startup 类的 Configure 方法中添加路由配置,如下所示:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    // ...

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller}/{action}/{id?}",
            defaults: new { controller = "Home", action = "Index" });

        routes.MapRoute(
            name: "images",
            template: "images/{imageName}",
            defaults: new { controller = "Image", action = "GetImage" });
    });
}

以上路由配置定义了一个名称为 images 的路由,该路由的地址为 images/{imageName},并作为默认值指定了一个名为 Image 的控制器和 GetImage 的方法。

  1. 最后,在客户端中可以通过 URL 请求图片文件。例如:
<img src="http://localhost:5000/images/cat.jpg" alt="Cat">

以上 HTML 代码将在客户端展示一张名为 cat.jpg 的图片。

总结

通过以上步骤可以很容易的实现使用 C# Web API 返回图片文件。还可以根据需要添加一些权限控制或者图片压缩等功能来优化应用程序。

完整代码可以在 GitHub 上查看。