Golang cara membuat fail daripada tatasusunan bait nodejs

WBOY
Lepaskan: 2024-02-09 11:39:29
ke hadapan
488 orang telah melayarinya

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!

Kandungan soalan

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

Penyelesaian

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

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

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!