本站所搜集的资源均来源于网络,仅供学习研究代码使用,请勿商用
本站所有资源均免费下载无需付费。
登录账号后访问“个人中心”点击“我的余额”在右上角签到后即可免费下载
其资源在源站什么样下载就是什么样,并非本站制作发布,代码是否完整、是否有教程及使用说明需自行判断,本站不保证其资源可用。
本站所有资源均免费下载无需付费。
登录账号后访问“个人中心”点击“我的余额”在右上角签到后即可免费下载
其资源在源站什么样下载就是什么样,并非本站制作发布,代码是否完整、是否有教程及使用说明需自行判断,本站不保证其资源可用。
最近我继承了一个项目,其中所有文件附件都以“0xFFD8FFE000104A4649”的格式存储在数据库表中,我需要 PHP 能够读取和提供这些数据。
我的第一个想法是尝试使用 base64_decode,以防这是 base64 编码格式。不是。
原来它是Ascii格式的。
解决方案 1
下面的代码块将数据转换为 PHP 可以读取的格式,方法是发出带有 -r 和 -p 选项的 shell 命令 xxd 将命令传递给 proc_open 命令以运行,然后使用 fwrite 将数据返回到`$source`
$file = '0xFFD8FFE000104A4649...'; //var containing the source data
$desc = array(
0 => array('pipe', 'r'), // 0 is STDIN for process
1 => array('pipe', 'w') // 1 is STDOUT for process
);
$cmd = "xxd -r -p -";
$p = proc_open($cmd, $desc, $pipes);
fwrite($pipes[0], $file);
fclose($pipes[0]);
$source = stream_get_contents($pipes[1]);
fclose($pipes[1]);
proc_close($p);
虽然这可行,但它确实依赖于能够在您的服务器上运行 shell 命令。
解决方案 2
另一种方法是使用 hex2bin 函数并从数据中删除 0x 字符,这基本上做同样的事情,但 hex2bin 做了繁重的工作。
$source = hex2bin(ltrim(rtrim($file), '0x'));
如果您正在使用图像,则可以使用 base64 编码输出图像:
base64_encode($source)
或者使用headers直接渲染:
header('Content-type: image/jpg');
header('Content-Length: ' . strlen($source));
echo base64_encode($source);
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。