Последнее редактирование : Больше внимания следует уделять этому предложению из связанного с 2015 годом ответа SO
исходное решение (устарело)
При упоминании atob, btoa, base64js и других библиотек функции: сэкономьте время с помощью библиотеки и откажитесь от atobи btoa
Попробуйте base64.js .toByteArray со своими данными.Перейдите по ссылке на библиотеку Github Readme: там написано, что она делает именно то, что вам нужно, ну только от и до.
Успешно протестировано с 1.3.0 вашими данными base64js.min.js в Chrome 66.0.3359.181
Проверено @ 1.3.0 успешно с вашими данными в Nodejs @ 4.4.7
цитата из README:
base64js имеет три открытые функции, byteLength, toByteArray и fromByteArray, которые оба принимают один аргумент.
- byteLength - принимает строку base64 и возвращает длину байтового массива
- toByteArray - принимает строку base64 и возвращает байтовый массив
- fromByteArray - принимает массив байтов и возвращает строку base64
Я бы также проверял исходные двоичные данные для любого файлатип / структура, которая должна быть / иметь, если вы можете получить к ней доступ.
Проверяли ли вы строку base64 с base64, сначала это правильная строка base64?
честный код Пример ссылка и дополнительная информация в репозитории Github, если она включена в качестве сценария в клиенте, используйте:
var byteArray = base64js.toByteArray(myBase64Str)
В Node вы должны сделать:
var fs = require('fs')
var base64js = require('base64-js')
fs.readFile('pathToMyBase64File', 'utf8', (err, data) => { // here 'utf8' is mandatory
if (err) throw err;
var byteArray = base64js.toByteArray(data)
console.log(base64js.byteLength(data) == byteArray.length)
})
Важно, myBase64File долженбыть зашифрован с помощью utf-8 с BOM, иначе он не будет работать.
PS: я не какой-либо участник этой библиотеки, просто хороший инструмент для всех, LICENSE MIT.