0

我对 PHP 的流转换过滤器 ( base64_encode ) 有一个非常奇怪的问题。我的目标是使用 AWS S3 SDK 的 streamWrapper 从 s3 存储桶读取文件并对其进行 base64 编码,将其回显到响应中。为此,我使用以下代码,

@ob_flush();
@flush();
$fh = fopen(<FILE_PATH>, 'r');
stream_filter_append($fh, 'convert.base64-encode');
fpassthru($fh);
fclose($fh);

这适用于所有类型的文件,但对于文本文件,它会删除最后一个字符。当我们解码 base64 响应时,最后一个字符丢失了。

例如,

Hello, world!编码为SGVsbG8sIHdvcmxkIQ==

但是上面的函数在编码时省略了最后一个字符,产生以下

SGVsbG8sIHdvcmxk解码为Hello, world

有什么想法吗?

非常感谢你帮助我。

4

1 回答 1

2

我能够在 AWS 工程师的支持下解决这个问题。

可以在这里找到解决方案https://github.com/aws/aws-sdk-php/issues/540

谢谢。

于 2015-04-22T06:07:39.150 回答