php小編草近日發現了一個有趣的技術應用:使用Node.js將檔案取得到Golang API。 Node.js作為一個輕量級的JavaScript運行環境,以其高效的IO操作和非阻塞的特性而聞名。而Golang作為一種高效能的程式語言,對於處理並發任務和網路通訊有著出色的表現。將兩者結合起來,可以實現在Node.js中取得文件,並將文件傳遞給Golang API進行進一步處理,為開發者提供更靈活和高效的解決方案。在本文中,我們將介紹如何使用Node.js將檔案取得到Golang API,並探討其在實際專案中的應用場景。
我嘗試透過node-fetch發佈到具有某種結構的golang API文件,我可以從postman製作它,但無法從NodeJS製作
你好。我陷入了死胡同,我已經嘗試了一切......
我需要向 golang api 發出請求,我可以在 Postman 中創建它:它看起來像這樣: 郵差請求
我需要在 NodeJs 中重複它,但我總是收到來自 API 的錯誤請求
這是我在 Node 上的程式碼
let formData = new FormData() formData.append('postUUID', postUuid) json.data.uploadIds.map((upl, index) => { let file = data.files.find(el => el == upl.filename) formData.append(upl.uuid, fs.readFileSync(file)); }) let headers = new Headers() headers.append('Authorization', 'Bearer '+token) headers.append("Accept", "application/json"); fetch(API+'/posts/uploadMediaFiles', { method: 'POST', headers, body: formData })
與郵差產生的程式碼的差異僅在formdata.append("f2b07a43-f79f-4033-ab2d-bb3176934679", fileInput.files[0], "/file_0.jpg");
和我做而不是formData.append (upl.uuid, fs.readFileSync(檔案));
fs.readFileSync( )
傳回string
或Buffer
只包含檔案本身的內容。這意味著您僅將文件的原始內容傳遞給FormData.append()
,這又意味著您對fetch
的呼叫會將產生的鍵/值對視為文件- 這僅在使用Blob
或File
類型傳遞value
# 時發生(MDN)。
相反,將讀取檔案的內容作為Array
轉換為新的Blob
對象,然後將blob 物件和所需檔案的名稱傳遞給FormData
欄位(關於答案的快速提示) 這個問題):
formData.append(upl.uuid, new Blob([fs.readFileSync(file)]), upl.filename);
以上是NodeJs 將檔案取得到 Golang API的詳細內容。更多資訊請關注PHP中文網其他相關文章!