Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk menggunakan tamat masa konteks dalam muat naik fail Golang?
Menggunakan tamat masa konteks untuk muat naik fail dalam Go boleh menghalang pelayan daripada menunggu lama untuk klien menyelesaikan muat naik. Kaedah termasuk: 1) Buat objek konteks baharu dan tetapkan nilai tamat masa; 2) Hantar objek konteks kepada operasi fail 3) Gunakan ctx.Err() untuk menyemak sama ada operasi telah dibatalkan kerana tamat masa. Contoh praktikal: 1) Tetapkan tamat masa muat naik; 2) Parsing borang; 3) Proses fail; Contoh ini memastikan bahawa muat naik selesai dalam masa 10 saat atau mengembalikan ralat tamat masa.
Menggunakan tamat masa konteks semasa memuat naik fail dalam Go
Menetapkan tamat masa menggunakan pakej konteks dalam Go adalah penting untuk mengendalikan senario muat naik fail. Ia membolehkan kami mengehadkan masa operasi muat naik dan menghalang pelayan daripada menunggu lama untuk klien menyelesaikan muat naik.
Cara menggunakan
Anda boleh menggunakan tamat masa konteks dalam muat naik fail menggunakan langkah-langkah berikut:
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel()
http.Request
: http.Request
:// 根据 ctx 处理上传的文件 if err := handler.HandleUpload(req.Context(), req); err != nil { // 根据错误做出响应 }
ctx.Err()
// 检查是否因超时而取消 if ctx.Err() == context.DeadlineExceeded { // 根据超时做出响应 }
ctx.Err()
untuk menyemak sama ada operasi telah dibatalkan kerana tamat masa: package main
import (
"context"
"net/http"
"time"
)
// 设定文件上传超时为 10 秒
const uploadTimeout = 10 * time.Second
type handler struct{}
func (h *handler) HandleUpload(ctx context.Context, r *http.Request) error {
// 解析上传的表单
if err := r.ParseMultipartForm(int64(5e6)); err != nil {
return err
}
// 处理上传的文件
// ...
// 检查是否因超时而取消
if ctx.Err() == context.DeadlineExceeded {
return http.ErrRequestTimeout
}
return nil
}
func main() {
http.Handle("/upload", &handler{})
http.ListenAndServe(":8080", nil)
}
Berikut ialah contoh praktikal muat naik fail menggunakan tamat masa konteks:
rrreee🎜Dalam contoh ini, kami menetapkan tamat masa muat naik fail kepada 10 saat, dan jika muat naik tidak selesai dalam masa ini, kembalikan ralat Tamat Masa. 🎜Atas ialah kandungan terperinci Bagaimana untuk menggunakan tamat masa konteks dalam muat naik fail Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!