Rumah > Artikel > pembangunan bahagian belakang > Golang cara membuat fail daripada tatasusunan bait nodejs
editor php Banana akan memperkenalkan anda cara menggunakan Golang untuk mencipta fail daripada tatasusunan bait nodejs. Semasa pembangunan, kita selalunya perlu menyimpan tatasusunan bait sebagai fail. Menggunakan Golang, kami boleh menyelesaikan tugas ini dengan mudah. Pertama, kita perlu memindahkan tatasusunan bait nodejs ke pelayan Golang. Kemudian, gunakan fungsi WriteFile dalam pakej io/ioutil Golang untuk menulis tatasusunan bait pada fail. Dengan kaedah mudah ini, kita boleh melaksanakan fungsi mencipta fail daripada tatasusunan bait nodejs. Seterusnya, kami menerangkan langkah dan contoh kod proses ini secara terperinci. Mari mulakan!
Pelayan go saya menerima tatasusunan js melalui permintaan pos, dan data yang diperoleh adalah seperti ini
Bagaimana untuk menulisnya ke fail?
Dalam node.js saya boleh melakukan ini:
fs.writeFile(`${dir}/${body.file_name}`, Buffer.from(body.file), { flag: "w" }, function (err) { if (err) { console.log(err); return res.status(200).json({ 'status': 'error' }); } console.log(`file sucessfully saved to "${dir}${body.file_name}"`); return res.status(200).json({ 'status': 'ok' }); });
Menterjemah pergi baris demi baris akan menghasilkan keputusan berikut:
func handleincommingfile() http.handlerfunc { return func(w http.responsewriter, r *http.request) { if r.body == nil { log.println("body is empty") w.writeheader(http.statusbadrequest) w.write([]byte(`{ 'status': 'error' }`)) return } body, err := io.readall(r.body) if err != nil { log.printf("reading body: %v", err) w.writeheader(http.statusinternalservererror) w.write([]byte(`{ 'status': 'error' }`)) return } defer r.body.close() if err := os.writefile("path/to/filename.ext", body, 0644); err != nil { log.printf("writting content: %v", err) w.writeheader(http.statusinternalservererror) w.write([]byte(`{ 'status': 'error' }`)) return } w.writeheader(http.statusok) w.write([]byte(`{ 'status': 'ok' }`)) } }
Perhatikan bahawa saya memulangkan kod status http yang berbeza bergantung pada konteks ralat dan terdapat semakan yang hilang seperti sama ada fail itu sudah wujud.
Selain itu, saya mengesyorkan menyuntik perkhidmatan storan ke dalam pengendali untuk memudahkannya dan mengalihkan logik penciptaan fail ke pakej lain.
func handleIncommingFile(store storage.Manager) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { if err := store.Save(r.Body); err != nil { w.WriteHeader(http.StatusInternalServerError) return } w.WriteHeader(http.StatusOK) // ...
Ini akan membantu anda menguji pengendali dan ujian storan :)
Atas ialah kandungan terperinci Golang cara membuat fail daripada tatasusunan bait nodejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!