Rumah pembangunan bahagian belakang Golang Bagaimana untuk menggunakan fungsi pengaturcaraan rangkaian dalam bahasa Go untuk melaksanakan fail memuat turun pelayan HTTP?

Bagaimana untuk menggunakan fungsi pengaturcaraan rangkaian dalam bahasa Go untuk melaksanakan fail memuat turun pelayan HTTP?

Jul 29, 2023 am 11:57 AM
pergi bahasa pengaturcaraan rangkaian fail muat turun pelayan http

Bagaimana untuk menggunakan fungsi pengaturcaraan rangkaian dalam bahasa Go untuk melaksanakan fail muat turun pelayan HTTP?

Pengaturcaraan rangkaian memainkan peranan penting dalam pembangunan perisian moden. Menggunakan bahasa Go, kami boleh melaksanakan pelayan HTTP dengan mudah supaya ia boleh menyediakan fungsi muat turun fail. Artikel ini akan memperkenalkan cara menggunakan fungsi pengaturcaraan rangkaian dalam bahasa Go untuk melaksanakan pelayan HTTP mudah untuk merealisasikan fungsi muat turun fail.

  1. Import pakej yang diperlukan

Pertama, kita perlu mengimport beberapa pakej yang diperlukan. Dalam bahasa Go, kami boleh menggunakan pakej "net/http" dan "os" untuk melaksanakan pelayan HTTP dan operasi fail.

1

2

3

4

5

6

7

package main

 

import (

    "fmt"

    "net/http"

    "os"

)

Salin selepas log masuk
  1. Melaksanakan pelayan HTTP

Seterusnya, kami akan mencipta fungsi pengendali untuk mengendalikan permintaan HTTP daripada pelanggan. Dalam contoh ini, kami akan melaksanakan fungsi muat turun mudah Pelanggan menghantar nama fail melalui permintaan GET, dan pelayan akan mengembalikan fail kepada klien.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

func fileHandler(w http.ResponseWriter, r *http.Request) {

    // 获取文件名

    filename := r.URL.Query().Get("filename")

   

    // 打开文件

    file, err := os.Open(filename)

    if err != nil {

        // 文件不存在或无法打开,返回404

        http.NotFound(w, r)

        return

    }

    defer file.Close()

   

    // 设置响应头

    fileInfo, _ := file.Stat()

    w.Header().Set("Content-Disposition", "attachment; filename="+filename)

    w.Header().Set("Content-Type", "application/octet-stream")

    w.Header().Set("Content-Length", fmt.Sprintf("%d", fileInfo.Size()))

   

    // 发送文件给客户端

    http.ServeContent(w, r, filename, fileInfo.ModTime(), file)

}

Salin selepas log masuk

Dalam fungsi pemproses ini, kita mula-mula mendapat nama fail yang diluluskan oleh klien. Kemudian kami membuka fail dan melakukan semakan ralat. Jika fail tidak wujud atau tidak boleh dibuka, kami akan mengembalikan ralat 404 kepada klien. Jika fail dibuka dengan jayanya, kami menetapkan pengepala respons termasuk nama fail yang dimuat turun, jenis dan panjang. Akhir sekali, kami menggunakan fungsi http.ServeContent untuk menghantar kandungan fail kepada klien. http.ServeContent函数将文件内容发送给客户端。

  1. 注册处理器函数

main函数中,我们需要注册处理器函数,并将其绑定到一个路径上,以便客户端能够通过该路径访问服务。在本例中,我们将处理器函数注册到"/download"路径上。

1

2

3

4

func main() {

    http.HandleFunc("/download", fileHandler)

    http.ListenAndServe(":8000", nil)

}

Salin selepas log masuk

我们使用http.HandleFunc函数将处理器函数注册到指定路径上。然后,我们调用http.ListenAndServe函数来监听指定的端口,以便接收来自客户端的请求。

  1. 运行服务器

现在我们已经完成了HTTP服务器的实现,我们可以运行服务器并测试下载功能了。在命令行中运行go run main.go来启动服务器。服务器将监听8000端口,并等待客户端请求。

当客户端访问http://localhost:8000/download?filename=test.txt时,服务端将试图打开名为test.txt

    Daftar fungsi pemproses

    🎜Dalam fungsi utama, kita perlu mendaftarkan fungsi pemproses dan mengikatnya pada laluan supaya pelanggan boleh Mengakses perkhidmatan melalui jalan ini. Dalam contoh ini, kami mendaftarkan fungsi pengendali pada laluan "/download". 🎜rrreee🎜Kami menggunakan fungsi http.HandleFunc untuk mendaftarkan fungsi pemproses pada laluan yang ditentukan. Kemudian, kami memanggil fungsi http.ListenAndServe untuk mendengar pada port yang ditentukan untuk menerima permintaan daripada klien. 🎜
      🎜Jalankan pelayan🎜🎜🎜Sekarang kami telah menyelesaikan pelaksanaan pelayan HTTP, kami boleh menjalankan pelayan dan menguji fungsi muat turun. Jalankan go run main.go pada baris arahan untuk memulakan pelayan. Pelayan akan mendengar pada port 8000 dan menunggu permintaan pelanggan. 🎜🎜Apabila pelanggan mengakses http://localhost:8000/download?filename=test.txt, pelayan akan cuba membuka fail bernama test.txt dan menghantarnya kepada pelanggan. Jika fail tidak wujud, pelayan akan mengembalikan ralat 404. 🎜🎜Melalui contoh kod di atas, kita dapat melihat bahawa sangat mudah untuk melaksanakan pelayan HTTP untuk memuat turun fail menggunakan fungsi pengaturcaraan rangkaian yang disediakan oleh bahasa Go. Melalui contoh ini, kita boleh memahami fungsi berkuasa bahasa Go dalam pengaturcaraan rangkaian dan cara menggunakan fungsi ini untuk mencapai keperluan aplikasi sebenar. 🎜

Atas ialah kandungan terperinci Bagaimana untuk menggunakan fungsi pengaturcaraan rangkaian dalam bahasa Go untuk melaksanakan fail memuat turun pelayan HTTP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana cara menukar XML ke PDF di telefon anda? Bagaimana cara menukar XML ke PDF di telefon anda? Apr 02, 2025 pm 10:18 PM

Ia tidak mudah untuk menukar XML ke PDF secara langsung pada telefon anda, tetapi ia boleh dicapai dengan bantuan perkhidmatan awan. Adalah disyorkan untuk menggunakan aplikasi mudah alih ringan untuk memuat naik fail XML dan menerima PDF yang dihasilkan, dan menukarnya dengan API awan. API awan menggunakan perkhidmatan pengkomputeran tanpa pelayan, dan memilih platform yang betul adalah penting. Kerumitan, pengendalian kesilapan, keselamatan, dan strategi pengoptimuman perlu dipertimbangkan ketika mengendalikan penjanaan XML dan penjanaan PDF. Seluruh proses memerlukan aplikasi front-end dan API back-end untuk bekerjasama, dan ia memerlukan pemahaman tentang pelbagai teknologi.

Perpustakaan apa yang digunakan untuk operasi nombor terapung di GO? Perpustakaan apa yang digunakan untuk operasi nombor terapung di GO? Apr 02, 2025 pm 02:06 PM

Perpustakaan yang digunakan untuk operasi nombor terapung dalam bahasa Go memperkenalkan cara memastikan ketepatannya ...

Apakah masalah dengan thread giliran di crawler colly go? Apakah masalah dengan thread giliran di crawler colly go? Apr 02, 2025 pm 02:09 PM

Masalah Threading Giliran di GO Crawler Colly meneroka masalah menggunakan Perpustakaan Colly Crawler dalam bahasa Go, pemaju sering menghadapi masalah dengan benang dan permintaan beratur. � ...

Di Go, mengapa rentetan percetakan dengan fungsi println dan rentetan () mempunyai kesan yang berbeza? Di Go, mengapa rentetan percetakan dengan fungsi println dan rentetan () mempunyai kesan yang berbeza? Apr 02, 2025 pm 02:03 PM

Perbezaan antara percetakan rentetan dalam bahasa Go: perbezaan kesan menggunakan fungsi println dan rentetan () sedang ...

Apa yang perlu saya lakukan jika label struktur tersuai di Goland tidak dipaparkan? Apa yang perlu saya lakukan jika label struktur tersuai di Goland tidak dipaparkan? Apr 02, 2025 pm 05:09 PM

Apa yang perlu saya lakukan jika label struktur tersuai di Goland tidak dipaparkan? Apabila menggunakan Goland untuk Pembangunan Bahasa GO, banyak pemaju akan menghadapi tag struktur tersuai ...

Bagaimana menyelesaikan masalah penukaran jenis user_id semasa menggunakan aliran redis untuk melaksanakan beratur mesej dalam bahasa Go? Bagaimana menyelesaikan masalah penukaran jenis user_id semasa menggunakan aliran redis untuk melaksanakan beratur mesej dalam bahasa Go? Apr 02, 2025 pm 04:54 PM

Masalah menggunakan redisstream untuk melaksanakan beratur mesej dalam bahasa Go menggunakan bahasa Go dan redis ...

Apakah perbezaan antara struktur definisi kata kunci `var` dan` type` dalam bahasa Go? Apakah perbezaan antara struktur definisi kata kunci `var` dan` type` dalam bahasa Go? Apr 02, 2025 pm 12:57 PM

Dua cara untuk menentukan struktur dalam bahasa Go: perbezaan antara VAR dan jenis kata kunci. Apabila menentukan struktur, pergi bahasa sering melihat dua cara menulis yang berbeza: pertama ...

Perpustakaan mana yang dibangunkan oleh syarikat besar atau disediakan oleh projek sumber terbuka yang terkenal? Perpustakaan mana yang dibangunkan oleh syarikat besar atau disediakan oleh projek sumber terbuka yang terkenal? Apr 02, 2025 pm 04:12 PM

Perpustakaan mana yang dibangunkan oleh syarikat besar atau projek sumber terbuka yang terkenal? Semasa pengaturcaraan di GO, pemaju sering menghadapi beberapa keperluan biasa, ...

See all articles