共计 936 个字符,预计需要花费 3 分钟才能阅读完成。
在 Go 语言中处理并发文件上传问题时,可以使用 goroutine 来实现并发上传。下面是一个简单的示例代码:
package main
import (
"fmt"
"io"
"net/http"
"os"
"path/filepath"
)
func main() {http.HandleFunc("/upload", uploadHandler)
http.ListenAndServe(":8080", nil)
}
func uploadHandler(w http.ResponseWriter, r *http.Request) {
if r.Method == "POST" {r.ParseMultipartForm(32 << 20) // 设置最大文件大小
file, handler, err := r.FormFile("file")
if err != nil {fmt.Println(err)
return
}
defer file.Close()
filename := handler.Filename
savePath := filepath.Join("./uploads", filename)
out, err := os.Create(savePath)
if err != nil {fmt.Println(err)
return
}
defer out.Close()
_, err = io.Copy(out, file)
if err != nil {fmt.Println(err)
return
}
fmt.Fprintf(w, " 文件上传成功!")
}
}
在这个示例中,我们通过 http.HandleFunc
函数将 uploadHandler
函数绑定到 /upload
路径上。在 uploadHandler
函数中,我们使用 r.ParseMultipartForm
函数解析表单数据,并通过 r.FormFile
函数获取上传的文件。
然后,我们通过 os.Create
函数创建一个文件,之后使用 io.Copy
函数将上传的文件内容拷贝到新创建的文件中。最后,使用 fmt.Fprintf
函数向客户端返回上传成功的消息。
这个示例中的代码是串行执行的,如果需要并发处理多个文件上传,可以将文件上传的处理放在一个 goroutine 中。具体实现方式可以根据实际需求进行调整。
丸趣 TV 网 – 提供最优质的资源集合!
正文完