L'éditeur php Baicao a récemment découvert une application technique intéressante : utiliser Node.js pour transférer des fichiers vers l'API Golang. En tant qu'environnement d'exécution JavaScript léger, Node.js est célèbre pour ses opérations d'E/S efficaces et ses fonctionnalités non bloquantes. En tant que langage de programmation hautes performances, Golang présente d'excellentes performances dans la gestion des tâches simultanées et de la communication réseau. En combinant les deux, vous pouvez obtenir des fichiers dans Node.js et transmettre les fichiers à l'API Golang pour un traitement ultérieur, offrant ainsi aux développeurs une solution plus flexible et plus efficace. Dans cet article, nous présenterons comment utiliser Node.js pour transférer des fichiers vers l'API Golang et explorerons ses scénarios d'application dans des projets réels.
J'essaie de publier via node-fetch dans un fichier API golang avec une certaine structure, je peux le faire depuis postman mais pas depuis NodeJS
Bonjour. Je suis dans une impasse et j'ai tout essayé...
Je dois faire une requête à golang api, je peux la créer dans Postman : elle ressemble à ceci : Demande du facteur
Je dois le répéter dans NodeJs mais je continue de recevoir de mauvaises requêtes de l'API
Voici mon code sur 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 })
La différence avec le code généré par Postman se trouve uniquement dans formdata.append("f2b07a43-f79f-4033-ab2d-bb3176934679", fileInput.files[0], "/file_0.jpg");
et le mien fait à la place " 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
Renvoie une string
ou un Buffer
qui contient uniquement le contenu de le fichier lui-même. Cela signifie que vous transmettez uniquement le contenu brut du fichier à FormData.append()
, ce qui signifie que votre appel à fetch
traitera la clé/valeur résultante. paires comme pour les fichiers - cela ne se produit que lors du passage d'une valeur
en utilisant les types Blob
ou File
(MDN).
Lisez plutôt le contenu du fichier sous forme de Array
转换为新的 Blob
对象,然后将 blob 对象和所需文件的名称传递给 FormData
champs (astuce rapide sur la réponse à cette question ) :
formData.append(upl.uuid, new Blob([fs.readFileSync(file)]), upl.filename);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!