如何实现向服务器端Node-RED节点上传本地文件?
首先直接给结论:默认情况下,Node-RED的核心文件相关节点无法直接通过拖拽本地文件或输入本地电脑路径来加载你本地的文件——因为Node-RED运行在服务器端,它只能访问服务器自身的文件系统,没法直接读取你本地电脑的文件资源。
不过有几个实用的方法可以实现你的需求:
使用Node-RED Dashboard的上传组件
安装node-red-dashboard包后,添加ui_upload节点到你的流程中。这个节点会在Dashboard前端生成一个文件上传区域,你可以直接拖拽本地文件到这里,文件会被自动上传到你指定的服务器目录(比如/home/pi/uploads/)。上传完成后,节点会输出包含服务器端文件路径的消息,后续你就可以用File节点读取这个路径下的文件了。记得在ui_upload节点的配置里设置好目标上传目录,并确保该目录有读写权限。手动上传文件到服务器
如果不需要前端界面,可以用SCP、SFTP类工具(比如WinSCP、FileZilla)把本地文件上传到服务器的/home/pi/目录下。上传完成后,你就能在Node-RED的File节点中直接选择这个服务器路径(比如/home/pi/your-local-file.txt)来使用文件。自定义HTTP上传接口
要是需要更灵活的集成方式,可以用http-in和http-response节点搭建一个简单的文件上传API,再配合函数节点(使用Node.js的fs模块)来处理上传的文件。比如在函数节点里通过msg.req.files获取上传的文件对象,然后写入到服务器的/home/pi/目录下,之后就能在流程中使用这个文件路径。
需要注意的是,无论用哪种方法,都要确保服务器上的目标目录(比如/home/pi/)有足够的读写权限,避免出现文件无法保存或读取的问题。
内容的提问来源于stack exchange,提问作者sienki_jenki

