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