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

NodeJs mendapatkan fail ke API Golang

WBOY
Lepaskan: 2024-02-08 23:00:10
ke hadapan
1253 orang telah melayarinya

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
})
Salin selepas log masuk

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);
Salin selepas log masuk

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

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan