【发布时间】:2017-09-14 22:59:43
【问题描述】:
我正在制作一个 Web Api,我需要向客户端返回多个图像。我目前为每个图像使用 Base64 字符串,但这会导致每个请求花费的时间太长。有没有更好、更高效的图片返回方式?
这是我正在使用的代码:
控制器:
public LearningUnits GetLearningUnits([FromODataUri]Guid key)
{
var record = db.LearningUnits.SingleOrDefault(inst => inst.LearningUnitId == key);
record.ImageURLPath = ImageHandler.ImageToByteArrayFromFilePath(record.ImageURLPath);
return record;
}
ImageToByteArray 方法:
public static string ImageToByteArrayFromFilePath(string imagefilePath)
{
byte[] imageArray = File.ReadAllBytes(imagefilePath);
string baseImage = Convert.ToBase64String(imageArray);
return baseImage;
}
【问题讨论】:
-
这样的图片一共有多少张?
-
为什么不能在模型中返回url,然后客户端会进一步请求获取图像二进制文件?
-
取决于数据库中的记录数量。每条记录都有一个图像。所以它可能是 1 到 1000。
-
@WadeFerreira:返回“1000 张图像”肯定会解释为什么请求需要很长时间。 通常 API 会返回引用其他资源(例如图像)的数据,方法是提供这些资源的 URL,并且数据的消费者会根据需要对这些其他资源发出单独的请求。当客户请求 1000 条记录时,他们真的会在同一个请求中也想要所有这些图像吗?这些数据的用例是什么?
-
@Mufaka - 你说得对,我错过了,现在在 OPs 代码中看到了。
标签: c# asp.net-web-api