Rumah  >  Artikel  >  pembangunan bahagian belakang  >  NodeJs mendapatkan fail ke API Golang

NodeJs mendapatkan fail ke API Golang

WBOY
WBOYke hadapan
2024-02-08 23:00:101184semak imbas

NodeJs 将文件获取到 Golang API

editor php Baicao baru-baru ini menemui aplikasi teknikal yang menarik: menggunakan Node.js untuk mendapatkan fail ke API Golang. Sebagai persekitaran berjalan JavaScript yang ringan, Node.js terkenal dengan operasi IO yang cekap dan ciri tidak menyekat. Sebagai bahasa pengaturcaraan berprestasi tinggi, Golang mempunyai prestasi cemerlang dalam mengendalikan tugas serentak dan komunikasi rangkaian. Menggabungkan kedua-duanya, anda boleh mendapatkan fail dalam Node.js dan menghantar fail ke API Golang untuk pemprosesan selanjutnya, memberikan pembangun penyelesaian yang lebih fleksibel dan cekap. Dalam artikel ini, kami akan memperkenalkan cara menggunakan Node.js untuk mendapatkan fail ke API Golang dan meneroka senario aplikasinya dalam projek sebenar.

Kandungan soalan

Saya cuba menghantar melalui pengambilan nod ke fail API golang dengan beberapa struktur, saya boleh membuatnya dari posmen tetapi bukan dari NodeJS

Salam. Saya buntu dan saya telah mencuba segala-galanya...

Saya perlu membuat permintaan untuk golang api, saya boleh menciptanya dalam Posmen: ia kelihatan seperti ini: Permintaan Posmen

Saya perlu mengulanginya dalam NodeJs tetapi saya terus mendapat permintaan buruk daripada API

Ini kod saya pada 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
})

Perbezaan dengan kod yang dijana oleh Posman hanya dalam formdata.append("f2b07a43-f79f-4033-ab2d-bb3176934679", fileInput.files[0], "/file_0.jpg"); dan saya lakukan sebaliknya " 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 Mengembalikan rentetan atau Buffer yang hanya mengandungi kandungan fail itu sendiri. Ini bermakna anda hanya menghantar kandungan mentah fail kepada FormData.append(), yang seterusnya bermakna bahawa panggilan anda untuk fetch akan mengendalikan kunci/nilai yang terhasil berpasangan sebagai Untuk fail - ini hanya berlaku apabila menghantar nilai menggunakan jenis Blob atau Fail (MDN).

Sebaliknya, baca kandungan fail sebagai Array 转换为新的 Blob 对象,然后将 blob 对象和所需文件的名称传递给 FormData medan (petua cepat tentang jawapan kepada soalan ini ):

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

Atas ialah kandungan terperinci NodeJs mendapatkan fail ke API Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam