На моем сервере node.js я загружаю файл с другого сервера. Загруженный файл представляет собой данные изображения JPG, закодированные с помощью Base64 два раза, это означает, что мне нужно декодировать его 2 раза. Дан мой код.
var base64DecodedFileData = new Buffer(file_data, 'base64').toString('binary');
var tmp = base64DecodedFileData.split("base64,");
var base64DecodedFileData = new Buffer(tmp[1], 'base64').toString('binary');
var file = fs.createWriteStream(file_path, stream_options);
file.write(base64DecodedFileData);
file.end();
Я знаю, что данные моего изображения действительны при первом декодировании (я проверил эти данные в онлайн-декодерах base64, декодируя их во второй раз, и у меня есть правильное изображение), но когда я декодирую их во второй раз и создаю файл с эти данные. Я не получаю действительный файл JPG.
Я сравнил его с реальным изображением, начало и конец обоих файлов выглядят нормально, но что-то не так в моем созданном файле. Сконструированный файл также больше по размеру, чем исходный.
PS: я делаю разделение перед декодированием во второй раз, потому что данные после первого декодирования начинаются с
данные:; base64, СТАРТ ДАННЫХ
Есть предположения. Фаррух Аршад.