我使用以下步骤测试了NodeRED。
- 将file.zip放在NodeRED公用文件夹上
- 使用浏览器直接通过http://example.com/file.zip.它运行良好
- 创建HTTP-In节点以接受来自/file.zip的GET请求HTTP节点内映像
-
创建HTTP响应节点并设置以下响应标头HTTP响应节点映像
Content-Disposition
至attachment; filename= file.zip
Content-Type
至application/octet-stream
-
当我从浏览器请求这个url时,file.zip可以下载,但无法打开(已损坏)。当我在浏览器上查看网络调试器工具时,我可以看到Content-Type响应标头是
application/octet-stream; charset=utf-8
,而Content-Disposition是按预期设置的。
我发现了这个问题(https://github.com/node-red/node-red/issues/1023)这已经在我的NodeRED版本0.17.5(最新)中修复了。我不确定这是否与我的问题有关。
我猜charset=utf-8
是罪魁祸首。如何使用Content-Disposition:attachment; filename= file.zip
在节点中通过http成功下载file.zip?
正如@hardillb所指出的,我的流没有发送任何数据。在将文件发送到http响应节点之前,我必须使用functionGlobalContext和readFileSync来加载文件的内容。