Прочитайте двоичный файл в Javascript и сделайте qr-код

Мне нужно прочитать файл без расширения на веб-странице, а затем закодировать этот файл в QR-коде в двоичном режиме.

Чтобы кодировать двоичный код, я нашел эту библиотеку, и я думаю, что она хороша: https://github.com/nayuki/QR-Code-generator/blob/master/javascript/qrcodegen.js

Но для первой части, прочитайте файл и не изменяйте его, не кодируйте его как текст или что-то еще, я не могу понять, как это сделать.

Какой лучший выбор? Успехом может быть просто чтение этого файла и разрешение странице загрузить файл, который я прочитал, чтобы проверить, что это тот же файл.


person h0m3l3ss    schedule 11.07.2018    source источник
comment
Вы должны дать нам что-то, что вы сделали. не просто спрашивая, что я могу сделать   -  person MajiD    schedule 12.07.2018
comment
Я ничего не делал, я написал страницу, в которой у меня есть селектор файлов и кнопка. Я сломал себе голову, обнаружив эту библиотеку кода qr (трудно найти библиотеку js кода qr, которая поддерживает двоичное кодирование и хорошо документирована). Для чтения, я думаю, это путь (developer. mozilla.org/en-US/docs/Web/API/FileReader/), но теперь я не могу получить работающий скрипт. Я много читал об этом, но нашел старый и устаревший код. Я просто спрашиваю библиотеку.   -  person h0m3l3ss    schedule 12.07.2018
comment
Довольно непонятно, что вы пытаетесь здесь спросить. Откуда этот файл, который вы пытаетесь прочитать? А из какого файла вы пытаетесь сделать QR-код? Это кажется странным, поскольку QR-коды обычно могут хранить только около 3 КБ или меньше данных.....   -  person Claies    schedule 12.07.2018
comment
И если, как предполагает ваш недавний комментарий, все, что вы пытаетесь сделать, это получить рекомендации для библиотеки, вы должны знать, что такой вопрос не по теме для этого сайта.   -  person Claies    schedule 12.07.2018
comment
Мне нужно закодировать зашифрованный файл размером менее 600 байт   -  person h0m3l3ss    schedule 12.07.2018
comment
Я прочитал в stackoverflow много старых дискуссий об этой задаче, я не написал ни одной строки кода, просто прочитал о всевозможных возможностях, но никто не работал.   -  person h0m3l3ss    schedule 12.07.2018
comment
Однако ваш комментарий по-прежнему вводит в заблуждение ... вы говорите, что я ничего не сделал, но затем подробно описываете (все еще слишком кратко) некоторую попытку использования программы чтения файлов и говорите, что вы не можете получить работающий скрипт, что подразумевает, что вы хотя бы пытались написать что-то, что не работает.... Это то, что мы хотим видеть; мы можем помочь выяснить, что пошло не так с вашей неудачной попыткой.   -  person Claies    schedule 12.07.2018
comment
Хорошо, я понял, завтра (сейчас здесь ночь) я выложу код   -  person h0m3l3ss    schedule 12.07.2018
comment
Я имею в виду, что если вы правильно используете FileReader, он должен создать ArrayBuffer, который содержит ваши данные, и вы сможете использовать его в качестве исходных данных для своего QR-кода. Это не сложный процесс, и устранить неполадки должно быть легко.   -  person Claies    schedule 12.07.2018
comment
Хорошо, спасибо, Клэйс, завтра я пропингую тебя.   -  person h0m3l3ss    schedule 12.07.2018


Ответы (1)


хорошо, я правильно обработал:

$("#pwbutton").click(function(e) {
  e.preventDefault();

  var file = document.getElementById('customFile').files[0];

  var fr = new FileReader();

  fr.onloadend = function(e) {
    console.log(e.target.result);
    var readed = e.target.result;

    var QRC = qrcodegen.QrCode;
    var segs = qrcodegen.QrSegment.makeSegments(String.fromCharCode.apply(null, new Uint8Array(e.target.result)));
    var qr = QRC.encodeSegments(segs, QRC.Ecc.LOW, 19, 19, -1, true);
    var canvas = document.getElementById("qrcode-canvas");
    qr.drawCanvas(3, 0, canvas);

    $('#qresult').show();
  };

  fr.readAsArrayBuffer(file);


});
person h0m3l3ss    schedule 12.07.2018
comment
Вы должны использовать QrSegment.makeBytes(). Не возитесь с String.fromCharCode(). - person Nayuki; 08.11.2018