Javascript преобразование blob в строку и обратно
Я могу преобразовать blob в string с помощью FileReader, но я хочу преобразовать его обратно:
var reader = new window.FileReader();
reader.readAsDataURL(blob);
reader.onloadend = function() {
base64data = reader.result;
var blobToSend = base64data.substr(base64data.indexOf(',')+1);
rtcMultiConnection.send({"command":{
"recording":blobToSend,
"type":blob.type,
"size":blob.size
}});
}
Это отправляется с https://github.com/muaz-khan/RTCMultiConnection но главный вопрос заключается в том, как восстановить blob после отправки. К сожалению, отправка blob as не сработала.
1 ответов
источник: создание Blob из строки base64 в JavaScript Этот метод правильно преобразует данные base64 обратно в исходные двоичные данные. Ради улучшения производительности, данные обрабатываются блоками по размеру sliceSize. Примечание: источник находится в TypeScript
public static Base64ToBlob(b64Data, contentType = "", sliceSize = 512): Blob
{
const byteCharacters = atob(b64Data);
const byteArrays = [];
for (let offset = 0; offset < byteCharacters.length; offset += sliceSize)
{
const slice = byteCharacters.slice(offset, offset + sliceSize);
const byteNumbers = new Array(slice.length);
for (let i = 0; i < slice.length; i++)
{
byteNumbers[i] = slice.charCodeAt(i);
}
const byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
const blob = new Blob(byteArrays, { type: contentType });
return blob;
}