【问题标题】:How to get binary image data from IntPtr (look alike multipart/form-data)如何从 IntPtr 获取二进制图像数据(看起来像 multipart/form-data)
【发布时间】:2021-03-08 23:53:22
【问题描述】:

假设:

byte[] bytes = new byte[1024 * 100];
Marshal.Copy(nET_DVR_XML_CONFIG_OUTPUT.lpOutBuffer, b, 0, 1024 * 100);
string responseMsg = Encoding.ASCII.GetString(bytes);
            
//so string responseMsg basically like this.
string responseMsg = @"Content-Type:multipart/form-data;boundary=MIME_boundary
--MIME_boundary
Content-Type: application/json
Content-Length:1629
{
    "requestURL":   "/ISAPI/Intelligent/FDLib/FDSearch?format=json",
    "statusCode":   1
}
--MIME_boundary
Content-Type:image/jpeg
Content-Length:20455

???? ►JFIF ☺☺☺ ? ?  ??♥rExif  (much more binary data.....)

--MIME_boundary"; //End of string

如何仅获取图像二进制数据?为了更清楚,nET_DVR_XML_CONFIG_OUTPUT.lpOutBuffer是我通过ISAPI发送请求后设备发送的IntPtr。

希望我的问题足够清楚,可以理解。我已经被这个问题困扰了很长一段时间了。任何帮助将不胜感激。

【问题讨论】:

  • 你需要解析这个响应来获取需要的数据
  • @viveknuna 没有错,但更多标签会有所帮助。 获取数据使用什么?你在谈论asp.net ..? ..核心3? .. 客户? .. 服务器? .. 提供更多信息(不要假设人们知道)会给你一个更准确的答案。
  • @SeñorCMasMas .netcore。我希望我可以添加更多标签,不幸的是我没有足够的声誉来这样做。
  • @standleypeter 我添加了标签。我们不会在标题中放置任何可以作为标签的内容。

标签: c# .net-core


【解决方案1】:

您的回复是Multi-part MIME message

您的第一个挑战是解析 MIME 部分。这里有两个很好的资源:

第二个 MIME 消息部分显然是一个二进制 .jpeg 文件(因此是 JFIF header)。您应该能够将其视为 .Net “字符串”,并简单地将其转换为字节数组:

byte[] bytes = Encoding.ASCII.GetBytes(input); 

生成的字节数组就是您的 JPEG 图像。

我不确定你已经知道了多少,或者你到底“卡住”了哪里。但我希望这会有所帮助。

【讨论】:

  • 我不太确定如何分离边界并仅获取图像字节数据。
  • 就像我说的 - 你只需要阅读“MIME 部分”。真的就是这么简单。不幸的是,微软链接没有正确复制/粘贴。抱歉 - 我刚刚修好了。请阅读我引用的两个链接。您还可以在 Google 上搜索“C# Mime Multipart”,或安装 C# 库,例如 MimeKit: stackoverflow.com/a/46474417/421195
  • 感谢您对 MimeKit 库的建议。它解决了我的问题。干杯。
猜你喜欢
  • 1970-01-01
  • 2018-07-11
  • 2019-09-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-26
  • 1970-01-01
  • 2018-12-26
  • 1970-01-01
相关资源
最近更新 更多