Отсутствует последний символ при кодировании 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

Любые мысли, ребята?

Большое спасибо, что помогли мне.


person Vandhana Parkavi Valaguru    schedule 18.04.2015    source источник


Ответы (1)


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

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

Спасибо.

person Vandhana Parkavi Valaguru    schedule 22.04.2015