Golang で大きなファイルのマルチパート アップロードを実装します。mime/multipart パッケージを使用してマルチパート アップロード リクエストを作成します。 Content-Type を multipart/form-data に設定します。 HTTP クライアントを使用してリクエストを送信します。サーバーの応答を読み取り、結果を処理します。
Golangで大きなファイルを分割してアップロードする方法
大きなファイルをアップロードする場合、ファイル全体をサーバーに直接アップロードすると、通常、タイムアウト、メモリ不足、ネットワークの中断などのさまざまな問題が発生します。したがって、チャンクアップロードはより効率的で信頼性の高いソリューションです。
Golang では、[mime/multipart
](https://pkg.go.dev/mime/multipart) パッケージを使用して、ファイルをチャンクで簡単にアップロードできます。このパッケージは [Writer
](https://pkg.go.dev/mime/multipart#Writer) タイプを提供し、マルチパート アップロード リクエストを作成できるようにします: 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
/upload
パスにアップロードする必要がある large-file.txt
という名前の大きなファイルがあるとします。次の Golang プログラムを実行してアップロードできます: 🎜rrreee🎜 このプログラムは、large-file.txt
ファイルをチャンクでアップロードし、サーバーの応答を出力します。 🎜以上がGolang を使用して大きなファイルを分割してアップロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。