Есть ли способ отправить файл в пользовательскую форму узла в Node-Red? - PullRequest
0 голосов
/ 27 мая 2019

В пользовательском узле я хочу предоставить возможность автоматического заполнения данных формы с помощью файла. Поэтому мне нужно разрешить загрузку файла в форме редактирования.

В моем пользовательском узле я хотел бы разрешить отправлять файл в пользовательскую конечную точку (сделанную через RED.admin.post), которая анализирует файл и выводит json вызывающей стороне.

Есть ли способ сделать это?

1 Ответ

0 голосов
/ 28 мая 2019

Я решил таким образом:

В шаблоне .html файла


<script type="text/x-red" data-template-name="...">

    <input id="myFile" type="file" name="fileToParse">
    <input id="file-submit" type="submit" value="Import data from file" name="submit">
...
         oneditprepare: function () {
            $('#file-submit').click(function (e) {
                var fd = new FormData();
                fd.append('file', $('#myFile')[0].files[0]);
                var file = fd.get('file');
                var blb = file.slice();
                var reader = new FileReader();
                // This fires after the blob has been read/loaded.
                reader.addEventListener('loadend', (e) => {
                    var fileData = e.srcElement.result;
                    console.log(fileData);
                    $.ajax({
                        url: '/mynode/file-parse',
                        data: {fileData: fileData},
                        method: 'POST',
                        success: function (data) {
                            populateForm(data);
                        }
                    });
                });
                // Start reading the blob as text.
                reader.readAsBinaryString(blb);
            });

И в .js:


 RED.httpAdmin.post("/mynode/file-parse", function (req, res) {
        var output = [];
        var fileData = req.body.fileData;
        // ... parse fileData end produce output
        res.json(output)
    });
...