📅  最后修改于: 2023-12-03 14:39:44.523000             🧑  作者: Mango
在 Web 应用程序中,经常需要返回图片文件给客户端展示。而使用 C# 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
类型返回了该文件流。
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
的方法。
<img src="http://localhost:5000/images/cat.jpg" alt="Cat">
以上 HTML 代码将在客户端展示一张名为 cat.jpg
的图片。
通过以上步骤可以很容易的实现使用 C# Web API 返回图片文件。还可以根据需要添加一些权限控制或者图片压缩等功能来优化应用程序。
完整代码可以在 GitHub 上查看。