Отсутствует последний символ при кодировании base64 файла из S3 с использованием потокового фильтра

У меня очень странная проблема с фильтром преобразования потоков PHP (base64_encode). Моя цель — прочитать файл из корзины s3, используя streamWrapper пакета AWS S3 SDK и закодировать его в 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

Есть мысли, ребята?

Большое вам спасибо за помощь мне.

0

Решение

Я могу разобраться с поддержкой инженеров AWS.

Решение можно найти здесь https://github.com/aws/aws-sdk-php/issues/540.

Благодарю.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]