Heim > Artikel > Backend-Entwicklung > NodeJs rufen die Datei an die Golang-API ab
php-Editor Baicao hat kürzlich eine interessante technische Anwendung entdeckt: die Verwendung von Node.js, um Dateien an die Golang-API zu übertragen. Als leichte JavaScript-Laufumgebung ist Node.js für seine effizienten E/A-Vorgänge und nicht blockierenden Funktionen bekannt. Als leistungsstarke Programmiersprache verfügt Golang über hervorragende Leistungen bei der Bewältigung gleichzeitiger Aufgaben und der Netzwerkkommunikation. Wenn Sie beides kombinieren, können Sie Dateien in Node.js abrufen und zur weiteren Verarbeitung an die Golang-API übergeben, was Entwicklern eine flexiblere und effizientere Lösung bietet. In diesem Artikel stellen wir vor, wie Sie Node.js verwenden, um Dateien an die Golang-API zu übertragen, und untersuchen deren Anwendungsszenarien in tatsächlichen Projekten.
Ich versuche, über Node-Fetch in einer Golang-API-Datei mit einer gewissen Struktur zu posten. Ich kann es mit Postman erstellen, aber nicht mit NodeJS
Hallo. Ich bin in einer Sackgasse und habe alles versucht...
Ich muss eine Anfrage an die Golang-API stellen. Ich kann sie in Postman erstellen: Sie sieht so aus: Postboten-Anfrage
Ich muss es in NodeJs wiederholen, aber ich bekomme immer wieder fehlerhafte Anfragen von der API
Das ist mein Code auf 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 })
Der Unterschied zum von Postman generierten Code besteht nur in formdata.append("f2b07a43-f79f-4033-ab2d-bb3176934679", fileInput.files[0], "/file_0.jpg");
und meine machen stattdessen " rel="nofollow noreferrer">fs.readFileSync()
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
Gibt einen string
oder einen Buffer
zurück, der nur den Inhalt von enthält die Datei selbst. Das bedeutet, dass Sie nur den Rohinhalt der Datei an FormData.append()
übergeben, was wiederum bedeutet, dass Ihr Aufruf von fetch
den resultierenden Schlüssel/Wert behandelt Paare als Für Dateien – dies geschieht nur, wenn ein Wert
mit den Typen Blob
oder File
(MDN) übergeben wird.
Lesen Sie stattdessen den Inhalt der Datei als Array
转换为新的 Blob
对象,然后将 blob 对象和所需文件的名称传递给 FormData
Felder (kurzer Tipp zur Antwort auf diese Frage ):
formData.append(upl.uuid, new Blob([fs.readFileSync(file)]), upl.filename);
Das obige ist der detaillierte Inhalt vonNodeJs rufen die Datei an die Golang-API ab. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!