提問給的參考資料
https://flows.nodered.org/flow/cbf44e064b9406a1175a7e8d589f66ac
ChatGPT 回應
這個 Node-RED 流程示範了如何透過 HTTP 請求在兩個 Node-RED 實例(A電腦和B電腦)之間傳送檔案。以下是相關的流程和注意事項:
HTTP In 節點: 在 A 電腦上建立了一個 HTTP In 節點,監聽 "/files" 的 POST 請求。這個節點將接收到的檔案上傳並在 Debug 窗格中顯示其內容。
Inject 節點: 這是一個觸發流程的節點,將檔案讀取並生成正確的 msg.payload
,然後將其傳遞給 HTTP Request 節點,以上傳到 A 電腦的 HTTP In 節點。
Function 節點: 這個節點的主要作用是構建必要的請求 payload。它設置了 msg.headers
以指定請求的 Content-Type 為 multipart/form-data
,並構建了包含檔案信息的 msg.payload
。
HTTP Request 節點: 發送 HTTP POST 請求到 A 電腦的 "/files" 端點,將檔案上傳。
這個例子中,你可以看到 Function 節點接收到的 msg
物件包含了檔案信息,並將它們添加到 payload 中。payload 也包含其他兩個表單元素,分別是 select
和 print
,它們的值都是 "true"。
有一些觀察結果,如果你想自定義這個流程以滿足你的需求:
- Header 定義了分隔 payload 不同部分的邊界文本
boundary
。
- 當邊界文本出現在 payload 中時,在前面會加上額外的
--
。
- 最終邊界文本末尾也有一個額外的
--
。
- 所有換行符號必須是
\r\n
,這意味著你不能在 Template 節點中構建這個請求。
希望這能幫助你理解這個 Node-RED 流程的運作方式。如果有其他問題,請隨時問我!