如何识别mime字符串中base64图像的开头

问题描述 投票:0回答:1

根据我从基于 PHP 的电子邮件程序的 mime 字符串中提取 base64 图像字符串的(有限)经验,base64 图像始终在 mime 字符串中的第一对连续 LF (\x0A) 字符之后开始,并且始终遵循mime 内容类型等。情况总是如此并且可靠吗? 谢谢!

我还没有发现这个策略的例外,但我也没有看到这个规范。

例如,使用 GitHub 上的 php-mime-mail-parser 的 $attachment->getMimePartStr() 函数,我得到一个字符串:

内容类型:image/png; name=name.png 内容传输编码:base64 内容处置:附件; filename=name.png iVBORw0KGgoAAAANSUhEUgAAA...等

通过使用 PHP ord() 函数,我检测到两个连续的 \x0A 字符填充 filename=name.png 和 iVBORw0KGgoAAAANSUhEUgAAA... 之间的空格,我可以使用 strpos() 找到这些字符,并使用 substr() 提取base64 字符串 iVBORw0KGgoAAAANSUhEUgAAA... 等等

我想要 iVBORw0KGgoAAAANSUhEUgAAA... 等部分用于

的“数据:”
image base64 mime
1个回答
0
投票

标准正如您所观察到的:

Content-Type: image/png; name=name.png 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment; filename=name.png 

iVBORw0KGgoAAAANSUhEUgAAA... etc.

直到 MIME 部分结束。内容必须根据 Content-Transfer-Encoding 标头进行解码,不要假设您总是会得到 base64。 然而,,你不能只依赖LF。您可能会得到 CR/LF 序列,因为它们也是有效的。您可能想查看 RFC 2045 等。

© www.soinside.com 2019 - 2024. All rights reserved.