【发布时间】:2017-12-04 21:06:28
【问题描述】:
我有一个从 Javascript 函数 .toDataUrl() 创建的编码字符串。每次我尝试使用 PHP base64_decode() 将其转换为二进制文件时,它都会截断二进制文件。我已经尝试过各种项目,例如:
//First Attempt
$encoded = str_replace('data:image/png;base64,', '', $sig);
$decodedstring = base64_decode(str_replace(array(' ', '_'), array('+', '/'), $encoded));
$decodedstring = base64_decode(chunk_split($encoded));
//2nd attempt
$encoded = str_replace([' ','data:image/png;base64,'], ['+',''], $sig);
$decodedstring = "";
for ($i=0; $i < ceil(strlen($encoded)/256); $i++)
$decodedstring = $decodedstring . base64_decode(substr($encoded,$i*256,256));
//Other attempt
$decodedstring = base64_decode( str_replace(['data:image/png;base64,', ' '], ['','+'], $sig) );
这些都不会产生正确的文件。另请注意,当我使用标准 png base64 在线解码器时,图像看起来 100% 正确,因此问题似乎发生在转换中。
有没有人有其他想法。我花了几天时间试图研究这个没有运气。
【问题讨论】:
-
没有任何示例数据,我们无法重现该问题。
-
@Sammitch 不幸的是,我无法发布这条特定的数据,因为它是一个签名。此外,我们无法使用随机签名自己复制它。
标签: javascript php base64 png todataurl