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

Http Response Contains MIME stream.. which has binary Images seperated by Boundary String.. need to get those Images and save using c#

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

流看起来像这样...

Header 有

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)

--简单边界--

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

如果您使用我的 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
            }
        }
    }
}