http 响应包含 MIME 流.它具有由边界字符串分隔的二进制图像.需要获取这些图像并使用 C# 保存

本文关键字:图像 获取 保存 二进制 MIME 包含 响应 分隔 字符串 边界 http | 更新日期: 2023-09-27 18:32:13

当我向服务器发出HTTP请求时,它会使用MIME响应流进行响应,其中有两个或多个图像作为二进制数据,由边界字符串分隔现在我只需要提取这些图像并将它们单独保存到数据库中

流看起来像这样...

标题有

RETS-Version: RETS/1.0
MIME-Version: 1.0
Content-type: multipart/parallel;
boundary="simple boundary"

Http ResoinseStream 有

-

-简单边界

Content-Type: image/jpeg
Content-ID: 123456
Object-ID: 1
<binary data>(Image1)
-

-简单边界

Content-Type: image/jpeg
Content-ID: 123457
Object-ID: 1
<binary data>(Image2)
-

-简单边界 --

我需要提取图像 1 和图像 2 并将它们作为二进制图像保存在数据库中。

http 响应包含 MIME 流.它具有由边界字符串分隔的二进制图像.需要获取这些图像并使用 C# 保存

如果你使用我的 MimeKit 库,你可以很容易地做到这一点:

static MimeEntity ParseHttpWebResponse (HttpWebResponse response)
{
    var contentType = ContentType.Parse (response.ContentType);
    return MimeEntity.Parse (contentType, response.GetResponseStream ());
}
static void SaveAllImages (HttpWebResponse response)
{
    var entity = ParseHttpWebResponse (response);
    var multipart = entity as Multipart;
    if (multipart != null) {
        foreach (var image in multipart.OfType<MimePart> ()) {
            using (var memory = new MemoryStream ()) {
                image.ContentObject.DecodeTo (memory);
                var blob = memory.ToArray ();
                // save it to your database
            }
        }
    }
}