Я пытаюсь понять, как объект Blob можно использовать для программного создания двоичных файлов на уровне байтов в клиентском JavaScript.Как способ накопить знания, как я пытаюсь создать однобайтовый BLOB-объект, содержащий следующий октет: 00000001. Просто так?К сожалению, я не смог понять, как это сделать.Ниже приведена первая итерация моего кода:
let downloadButton = document.getElementById('downloadButton');
downloadButton.addEventListener('click', function(){
var myBlob = new Blob([1], {type : "octet/stream"});
url = window.URL.createObjectURL(myBlob);
let a = document.createElement('A');
a.href = url;
a.download = "testFileOctet";
a.click();
});
Я не удивлен, что это не приводит к желаемой последовательности битов «00000001» при просмотре в шестнадцатеричном редакторе.Я, однако, удивлен, что он выводит 00110001, который является кодировкой UTF-8 '1'.Я знаю, что из-за слабой типизации javascript все числа представлены в виде 64-разрядных чисел с плавающей запятой, поэтому я бы понял, если бы у меня была большая 64-разрядная последовательность.Или я бы понял, если бы я указал тип MIME как «text / plain» вместо «octet / stream» и получил вывод кодировки UTF-8.
Как бы то ни было, однако, я в растерянности ... Я даже пытался сделать несколько изменений, когда я изменил массив, подаваемый в конструктор Blob.Вместо [1] я попытался [0x1].Тот же результат.Я пытался [0b00000001].Тот же результат.
Итак.Что я делаю не так и как возможно создание файла на уровне байтов в клиентском JavaScript?Это проблема с тем, как я использую конструктор Blob, или это возможно связано с кодировкой URL, которую я использую, чтобы получить Blob из браузера?Любая помощь будет высоко ценится