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

Posted

技术标签:

【中文标题】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# 【发布时间】:2016-05-04 18:30:00 【问题描述】:

当我向服务器发出 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)

--简单边界--

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

谢谢,我会努力让你知道

以上是关于Http 响应包含 MIME 流.. 它具有由边界字符串分隔的二进制图像.. 需要获取这些图像并使用 c# 保存的主要内容,如果未能解决你的问题,请参考以下文章

读取 MIME 编码流的正确方法是啥?

图解HTTP

MIME::Parser 无法正确解析多部分/混合部分

HTTP请求格式响应格式及正文部分的MIME类型

怎么查询http请求是不是有响应

在 MIME 多部分消息中显式指定边界?