有没有一种方法可以将文件发送到Node-Red中的自定义节点表单?

时间:2019-05-27 07:56:43

标签: node-red

在自定义节点中,我想提供使用文件自动填充表单数据的可能性。因此,我需要允许以编辑形式上传文件。

在我的自定义节点中,我想允许将文件发送到自定义端点(通过RED.admin.post创建),该端点解析该文件并将json输出给调用方。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

我以这种方式解决了

在模板.html文件中


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

  <form id="myForm">
    <input id="myFile" type="file" name="fileToParse">
    <input id="file-submit" type="submit" value="Import data from file" name="submit">
  </form>
...
         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)
    });