首頁  >  文章  >  後端開發  >  NodeJs 將檔案取得到 Golang API

NodeJs 將檔案取得到 Golang API

WBOY
WBOY轉載
2024-02-08 23:00:101217瀏覽

NodeJs 将文件获取到 Golang API

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 的呼叫會將產生的鍵/值對視為文件- 這僅在使用BlobFile 類型傳遞value# 時發生(MDN)。

相反,將讀取檔案的內容作為Array 轉換為新的Blob 對象,然後將blob 物件和所需檔案的名稱傳遞給FormData 欄位(關於答案的快速提示) 這個問題):

formData.append(upl.uuid, new Blob([fs.readFileSync(file)]), upl.filename);

以上是NodeJs 將檔案取得到 Golang API的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除