Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk memuat naik fail besar dalam ketulan menggunakan Golang?
Laksanakan muat naik berbilang bahagian bagi fail besar di Golang: gunakan pakej mime/berbilang bahagian untuk membuat permintaan muat naik berbilang bahagian. Tetapkan Jenis Kandungan kepada berbilang bahagian/data-bentuk. Gunakan klien HTTP untuk menghantar permintaan. Baca respons pelayan dan proses hasilnya.
Cara memuat naik fail besar dalam ketulan di Golang
Apabila memuat naik fail besar, muat naik terus keseluruhan fail ke pelayan biasanya menghadapi pelbagai masalah seperti tamat masa, memori tidak mencukupi dan gangguan rangkaian. Oleh itu, muat naik chunked adalah penyelesaian yang lebih cekap dan boleh dipercayai.
Di Golang, anda boleh menggunakan pakej [mime/multipart
](https://pkg.go.dev/mime/multipart) untuk memuat naik fail dalam ketulan dengan mudah. Pakej ini menyediakan jenis [Penulis
](https://pkg.go.dev/mime/multipart#Writer), membolehkan kami membuat permintaan muat naik berbilang bahagian: mime/multipart
](https://pkg.go.dev/mime/multipart) 包轻松实现文件的分块上传。该包提供了 [Writer
](https://pkg.go.dev/mime/multipart#Writer) 类型,允许我们创建分块上传请求:
package main import ( "bytes" "fmt" "io" "io/ioutil" "mime/multipart" "net/http" "os" ) func main() { // 将文件内容读入内存 fileBytes, err := ioutil.ReadFile("large-file.txt") if err != nil { fmt.Println("Error reading file: ", err) return } // 创建分块上传请求 req, err := http.NewRequest("POST", "http://example.com/upload", bytes.NewReader(fileBytes)) if err != nil { fmt.Println("Error creating request: ", err) return } // 设置分块上传 Content-Type req.Header.Set("Content-Type", multipart.NewWriter().FormDataContentType()) client := &http.Client{} res, err := client.Do(req) if err != nil { fmt.Println("Error uploading file: ", err) return } if res.StatusCode != http.StatusOK { fmt.Println("Error uploading file: ", res.Status) return } // 读取服务器响应 bodyBytes, err := ioutil.ReadAll(res.Body) if err != nil { fmt.Println("Error reading response: ", err) return } fmt.Println("File uploaded successfully:", string(bodyBytes)) }
实战案例:
假设我们有一个名为 large-file.txt
的大文件,需要上传到服务器上的 /upload
路径。我们可以运行以下 Golang 程序进行上传:
go run main.go
该程序将以分块的形式上传 large-file.txt
rrreee
large-file.txt
yang perlu dimuat naik ke laluan /upload
pada pelayan. Kami boleh menjalankan program Golang berikut untuk memuat naik: 🎜rrreee🎜 Program ini akan memuat naik fail large-file.txt
dalam ketulan dan mencetak respons pelayan. 🎜Atas ialah kandungan terperinci Bagaimana untuk memuat naik fail besar dalam ketulan menggunakan Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!