我有一个二进制文件,我想要转换为符合标准MIME的base64字符串。我以为我可以使用php://filter
方法来过滤流,但我越来越挂断如何设置“行长”参数。有迹象表明,将达到类似的效果等方法,但我试图找出是否:在使用php时添加过滤器参数到流过滤器://过滤器
如果它甚至有可能/允许设置参数使用URI式方法的流过滤器。
它是如何完成的,如果可能的话。
这里有个拼图到目前为止我有:
很显然,我可以停止尝试被看中,并简单地去:
$binary = "path/to/binary.file";
$mime = file_get_contents($binary);
$mime = base64_encode($mime);
$mime = chunk_split($mime);
或者,我可以使用php://filter
方法没有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中添加line-length
参数。可能的东西喜欢:
$mime = file_get_contents("php://filter/read=convert.base64-encode:line-length=76/resource=$binary");
我想象中的问题是,参数有当使用stream_filter_append
传递作为数组。
所以有人知道我是否想要做什么?
哇。正是我需要知道的。我也不是C程序员,但在我的情况下,我甚至不知道要查找什么或阅读它,所以你比我更接近。谢谢! – Anthony 2010-04-06 11:35:39
不客气。 :) – salathe 2010-04-06 13:06:44