NodeJs rufen die Datei an die Golang-API ab

WBOY
Freigeben: 2024-02-08 23:00:10
nach vorne
1204 Leute haben es durchsucht

NodeJs 将文件获取到 Golang API

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.

Frageninhalt

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
})
Nach dem Login kopieren

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 的调用会将生成的键/值对视为文件 - 这仅在使用 BlobFile 类型传递 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 对象和所需文件的名称传递给 FormDataFelder (kurzer Tipp zur Antwort auf diese Frage ):

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

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!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!