node.js - 在 Node-RED 中,如何上传到具有给定配置的 Node 并稍后检索配置?

标签 node.js ibm-cloud node-red watson

我在 Bluemix 上使用 Node-RED,我想让用户上传文档,这里是流程的函数/模板中的相关代码片段

<form action="/upload" method="POST">
     <h1>Upload PDF</h1>
<input type="file" name="myFile" />
<input type="submit" />
</form>

当我运行它时,我选择了一个文件并按“提交”,但随后出现了消息 无法发布/上传 然后我就去了http://flows.nodered.org/node/node-red-contrib-http-multipart ,在示例中它说


您可以上传到具有以下配置的 Node :

[{ "name": "myFile" }]

并在 Node 的输出端口上使用以下函数访问文件

var fields = msg.req.fields;
msg.fields = Object.keys(fields);
var myFile = fields["myFile"][0];
msg.localFilename = myFile.path
...

1) 如何上传带有配置的 Node ?

2)一旦获得文件名,如何检索它以发送到下一个服务? - 下一个服务是“转换” - 它接受文件名。

最佳答案

要使其正常工作,您需要:
1- 一个经典的 http Node 连接到一个 html Node ,您可以在其中放置表单:

<form enctype="multipart/form-data" action="/fileUploaded" method="POST">
        <input type="file" name="myFile" />
        <input type="submit" />
</form>

2-然后将 HTTP 多部分 Node 与字段放在一起:

[{ "name": "myFile"}]

You link that node to a function node with the following code :
var fields = msg.req.files;
msg.fields = Object.keys(fields);
var myFile = fields["myFile"][0];
var fs = global.get('fs');
var inStr = fs.createReadStream(myFile.path);
var outStr = fs.createWriteStream('/app/public/upload/testUpload');
inStr.pipe(outStr);
msg.localFilename ='/upload/testUpload'
return msg;

您需要在/app/public/下有一个名为“upload”的文件夹
您还需要“fs”:
在 bluemix-settings.js 的 functionGlobalContext 中添加 fs:require('fs')
在package.json中添加 "fs":"x.x"
文件将被复制到:/app/public/upload/testUpload
然后我们将能够通过下一个 Node 中的 msg.localFilename 访问它,例如在这样的 HTML 页面中:

<html>
    <body>
        <h1>Job Done</h1>
        <a href=".{{localFilename}}">File uploaded here</a>
    </body>
</html>

关于node.js - 在 Node-RED 中,如何上传到具有给定配置的 Node 并稍后检索配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40390822/

相关文章:

websphere - 如何在 Websphere Liberty 和 Java 中使用 keystore ?

node.js - 如何调整 Node 红色流中的图像大小

node.js - koa-views nunjucks : Error: template not found: master

node.js - 关于智威汤逊的问题

javascript - 为什么我的异步函数返回 Promise { <pending> } 而不是一个值?

node.js - 使用 Node 检查器调试 CoffeeScript 源

python - 如何将 Python OpenID Connect 模块与 IBM Cloud App ID 结合使用?

kubernetes - 无法确定集群上安装的 Kubernetes 服务的类型

javascript - Node 红色 : lots of time to respond

audio - 如何在Nexmo中列出通话录音?