gpt4 book ai didi

php - 使用 php ://filter 时向流过滤器添加过滤器参数

转载 作者:搜寻专家 更新时间:2023-10-31 21:18:44 27 4
gpt4 key购买 nike

我有一个二进制文件,我想将其转换为符合标准 MIME 标准的 base64 字符串。我以为我可以使用 php://filter过滤流的方法,但我对如何设置“line-length”参数感到困惑。还有其他方法可以达到类似的结果,但我想弄清楚是否:

  1. 如果甚至可能/允许使用 URI 样式方法为流过滤器设置参数。

  2. 如何完成,如果可能的话。

以下是我到目前为止所得到的拼图:

显然,我可以停止尝试花哨而简单地使用:

$binary = "path/to/binary.file";
$mime = file_get_contents($binary);
$mime = base64_encode($mime);
$mime = chunk_split($mime);

或者,我可以使用不带 line-length 参数的 php://filter 方法,然后拆分它:

$binary = "path/to/binary.file";
$mime = file_get_contents("php://filter/read=convert.base64-encode/resource=$binary");
$mime = chunk_split($mime);

或者,我可以结合使用 fopenstream_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 时,参数必须作为数组传递。

那么有人知道我想要的东西能不能实现吗?

最佳答案

  1. If it's even possible/allowed to set parameters for stream filters using the URI-style method.

不幸的是,目前,1 无法为那些 php 提供过滤器名称(在您的情况下为 convert.base64-encode) ://过滤器 网址。

我会采用您的stream_filter_append 方法,将stream_get_contents 替换为fread(...)

  1. 查看 current source它显式地将 NULL 用于 php_stream_filter_createfilterparams 参数。 2 实现阅读您建议的风格的参数不会有太多工作。
  2. 我不是 C 程序员。

关于php - 使用 php ://filter 时向流过滤器添加过滤器参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2583338/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com