我有一个二进制文件,我想转换成标准的符合mime的base64字符串。我想我可以用
php://filter
方法来过滤流,但我对如何设置“line-length”参数感到困惑。还有其他一些方法也可以达到类似的效果,但我正在尝试找出是否:
-
如果甚至可以/允许使用uri样式方法为流过滤器设置参数。
-
如果可能,如何完成。
以下是迄今为止我所掌握的拼图片段:
很明显,我可以停止幻想,简单地说:
$binary = "path/to/binary.file";
$mime = file_get_contents($binary);
$mime = base64_encode($mime);
$mime = chunk_split($mime);
或者,我可以使用
php://过滤器
没有的方法
line-length
参数,然后拆分:
$binary = "path/to/binary.file";
$mime = file_get_contents("php://filter/read=convert.base64-encode/resource=$binary");
$mime = chunk_split($mime);
或者,我可以用
fopen
结合
stream_filter_append
完全不使用URL样式(如
Conversion Filters
手动):
$binary = "path/to/binary.file";
$param = array('line-length' => 76, 'line-break-chars' => "\r\n");
$fp = fopen($binary, 'r');
stream_filter_append($fp, 'convert.base64-encode',null, $param);
$mime = fread($fp, filesize($binary));
fclose($fp);
所以上面所有的结果都是一样的,但没有一个是我所希望的,那就是增加
线条长度
流的同一URL中的参数。可能是这样的:
$mime = file_get_contents("php://filter/read=convert.base64-encode:line-length=76/resource=$binary");
我想问题是当
流过滤器附加
使用。
那么有人知道我想要的能不能实现吗?