Здравствуйте, Igorxz, Вы писали:
I>Здравствуйте, vaa, Вы писали:
vaa>>Плагин криптопро работает с base64 данными.
vaa>>Поэтому подписи и шифр отгружаются клиенту в текстовом формате (enc).
vaa>>А хочется в двоичном (p7e). Можно конечно шифр отправлять на сервер и оттуда загружать преобразованный.
vaa>>Но может спецы знают как преобразовать данные в браузере?
I>I>let create_blob_from_base64String = function (base64String, contentType) {
I> const byteCharacters = atob(base64String);
I> const byteNumbers = new Array(byteCharacters.length);
I> for (let i = 0; i < byteCharacters.length; i++) {
I> byteNumbers[i] = byteCharacters.charCodeAt(i);
I> }
I> const byteArray = new Uint8Array(byteNumbers);
I> const blob = new Blob([byteArray], { type: contentType || 'text/json' });
I> return (blob);
I>}
I>
Спасибо! Я правда немного не так сделал, у меня кусками данные. Так отработало.
function _base64ToArrayBuffer(base64String) {
console.log(base64String);
const byteCharacters = atob(base64String);
const byteNumbers = new Array(byteCharacters.length);
for (let i = 0; i < byteCharacters.length; i++) {
byteNumbers[i] = byteCharacters.charCodeAt(i);
}
return byteNumbers;
}
arr = arr.concat(_base64ToArrayBuffer(chunk));
new Blob([arr], { type: "octet/stream" });
Но все равно облом. Похоже ограничение размера массива где-то в районе 64Мб, исходный файл 81Мб, чанк 1МБ, на 77% такая шляпа:
Uncaught (in promise) RangeError: Invalid array length
at Array.concat (<anonymous>)