为了账号安全,请及时绑定邮箱和手机立即绑定

如何让 go fasthttp 服务器在文件上传时更快地触发处理程序?

如何让 go fasthttp 服务器在文件上传时更快地触发处理程序?

Go
隔江千里 2022-06-06 17:53:13
我fasthttp用于文件服务器项目。文件服务器具有上传功能。对于上传文件,我将 akey作为 URL Query 传递以验证上传权限。主要的():// start http serverlog.Printf("Starting HTTP server on %q", listento)go func() {    h := &fasthttp.Server{        Handler: requestHandler,        MaxRequestBodySize: 2 * 1024 * 1024 * 1024,    }    if err := h.ListenAndServe(listento); err != nil {        log.Panicf("error in ListenAndServe: %s", err)    }}()requestHandler 函数:func requestHandler(ctx *fasthttp.RequestCtx) {    switch string(ctx.Path()) {    case "/uploadx":            log.Println("Upload: ["+ctx.RemoteIP().String()+"] ["+string(ctx.Path())+"]")    }   }我上传了一个大文件,不幸的requestHandler是,文件上传过程完成后会触发。但它应该在上传过程开始时触发,因为我想避免有人在没有检查权限的情况下上传 500MB 文件。有什么方法可以让 requestHandler 更快地触发?在上传过程的开始?服务器本身接收到了 HTTP 请求的第一部分,所以最大的问题是,为什么这么晚才fasthttp触发?requestHandler我现在试过了net/http:mux.HandleFunc("/upload", uploadFile)func uploadFile(w http.ResponseWriter, r *http.Request) {    fmt.Println("File Upload Endpoint Hit")    fmt.Println(r)}随着net/http我收到File Upload Endpoint Hit已经开始的 FileUpload - 完全符合要求,但我真的更喜欢使用fasthttp.难道我做错了什么?谢谢
查看完整描述

1 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

对于大文件上传,浏览器发送一个 Expect: 100-continue 头来询问服务器是否可以继续上传。您可以使用https://godoc.org/github.com/valyala/fasthttp#Server.ContinueHandler检查权限并允许或拒绝上传。

Fasthttp 在调用处理程序之前总是会读取完整的响应。这允许以更少的分配获得更高性能的 API。


查看完整回答
反对 回复 2022-06-06
  • 1 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信