在自定义节点中,我想提供使用文件自动填充表单数据的可能性。因此,我需要允许以编辑形式上传文件。
在我的自定义节点中,我想允许将文件发送到自定义端点(通过RED.admin.post创建),该端点解析该文件并将json输出给调用方。
有没有办法做到这一点?
答案 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)
});