У меня очень странная проблема с фильтром преобразования потока 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
Любые мысли, ребята?
Большое спасибо, что помогли мне.