gpt4 book ai didi

c# - 从 Web API 返回图像列表

转载 作者:行者123 更新时间:2023-12-05 07:43:45 30 4
gpt4 key购买 nike

我正在使用 MVC 和 C# 开发 Web API,我尝试返回存储在文件夹中的图像列表以及它们在数据库中的路径,我正在尝试这样做:

 public class Image {
public int Id { get; set; }
public string Path { get; set; }
public int Item_Id { get; set; }
public bool isMain { get; set; }
}

在图像 Controller 中我调用这个方法:

 [HttpGet]
[ActionName("GetImageByItemId")]
public HttpResponseMessage GetImages(int id)
{
try
{
using (var ctx = new ApplicationDbContext())
{
var entity = ctx.Images.Where(e => e.Item_Id == id).ToList();

// ctx.Images.FirstOrDefault(e => e.Item_Id == id);
if (entity != null)
{
List<HttpResponseMessage> shapes = new List<HttpResponseMessage>();
HttpResponseMessage response = new HttpResponseMessage();
for (int i = 0; i < entity.Count; i++)
{

String filePath = HostingEnvironment.MapPath("~/Images/" + entity[i].Path + ".jpg");
FileStream fileStream = new FileStream(filePath, FileMode.Open);
response.Content = new StreamContent(fileStream); // this file stream will be closed by lower layers of web api for you once the response is completed.
response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png");
shapes.Add(response);
}
// return response;
// return Request.CreateResponse(HttpStatusCode.OK, shapes);
return ControllerContext.Request
.CreateResponse(HttpStatusCode.OK, new {shapes});
}
else
{
return Request.CreateErrorResponse(HttpStatusCode.NotFound, "The Images With ID" + id.ToString() + " Not Found");
}
}
}
catch (Exception ex)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex);
}
}

如果我用

return response;

return  shapes[1];

它可以返回一张图片,但我需要它返回一张图片列表,该怎么做?

最佳答案

一个 HTTP 响应可以包含零个或一 (1) 个内容。没有了。

合理的解决方案

如果您想提供多个文件,您需要根据需要发出尽可能多的请求。

首先,创建一个 MVC 操作,该操作将返回可用于给定实体 ID 的文件列表。

然后,创建一个 MVC 操作,将实体 ID 文件 ID 作为参数。

在客户端,首先调用第一个方法。然后根据要下载的文件调用第二个。

一揽子解决方案

您还可以使用 System.IO.Packaging 将多个文件打包成一个文件(zip、tar、7zip...)或 known library .

外星人的解决方案

您也可以尝试实现 MIME服务器端和客户端的规范。警告:当前的网络浏览器不实现它。这显然是非标准,因此不推荐This article似乎解决了该技术。

关于c# - 从 Web API 返回图像列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43429754/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com