首頁 > 後端開發 > Golang > 主體

NodeJs 將檔案取得到 Golang API

WBOY
發布: 2024-02-08 23:00:10
轉載
1204 人瀏覽過

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
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!