У меня есть процесс Pentaho, который является base64, кодирующий двоичный (PDF) с помощью Java - с помощью этой команды:Кодирование двоичного кода в качестве BASE64 в Java и его расшифровке в node.js
Шаг: Загрузка содержимого файла В память Выходы: pdf_content
Тогда
Шаг: Javascript Выходы: encString
var encString = new Packages.java.lang.String(Packages.org.apache.commons.codec.binary.Base64.encodeBase64(pdf_content.getBytes()));
Тогда
Шаг: Rest Client (сообщений данных)
На стороне NodeJs
const binary = new Buffer(base64Encoded, 'base64');
Проблема заключается в том, что двоичный файл на узле сторона отличается от исходной (у меня есть доступ к файлам и их копирование).
Дальнейшее запутывание вопроса Я представил промежуточный шаг, сохраняющий base64Encoded строку на диск перед декодированием. Я также затем открыл исходный файл (с Pentaho Side) и закодированы, что с помощью
Buffer(fs.readFileSync(originalPath)).toString('base64')
и сравнили базы 64 закодированные версии каждого. Я надеялся подтвердить, что алгоритм отличается (хотя гарантии нет). Сами файлы были одинаковой длины и начинались и заканчивались без различий. Рассеянный о файле был кучей незначительных различий. 1 байт здесь 1 байт.
Другие биты: Apache.Commons ... Base64 использует «rfc 2045». Буфер на стороне узла Js использует «rfc 4648» (я могу неправильно истолковать описание). Вопросы,
- Есть ли известный способ связи base64 между Java-кодировкой и декодированием Node Js?
- Существуют ли другие рекомендации по кодировке base64 в Pentaho?
FWIW, [RFC 4648] (https://tools.ietf.org/html/rfc4648), по-видимому, является фактической кодировкой base64 и упоминает некоторые ограничения из [RFC 2045] (https: //www.ietf. org/rfc/rfc2045.txt), поэтому на первый взгляд они не кажутся несовместимыми. – ssube
Да, я так понял. Я надеялся, что смогу понять, как перевести между ними, но это не кажется вероятным. Я не могу найти совместимую реализацию на стороне узла ... Я думаю, что моя реализация Java - это гонг, который будет ограничен предварительно установленным 1.7 – akaphenom