golang大文件上传怎么实现

   2025-02-15 8990
核心提示:在Go语言中,可以使用net/http包来实现大文件上传。下面是一个简单的示例:package mainimport (fmtionet/httpos)func uploadFil

在Go语言中,可以使用net/http包来实现大文件上传。下面是一个简单的示例:

package mainimport ("fmt""io""net/http""os")func uploadFile(w http.ResponseWriter, r *http.Request) {// 限制最大上传文件大小r.ParseMultipartForm(32 << 20) // 32MBfile, handler, err := r.FormFile("file")if err != nil {fmt.Println(err)return}defer file.Close()// 创建一个新文件用于保存上传的文件f, err := os.OpenFile(handler.Filename, os.O_WRONLY|os.O_CREATE, 0666)if err != nil {fmt.Println(err)return}defer f.Close()// 将上传的文件内容复制到新文件中io.Copy(f, file)fmt.Fprintf(w, "上传成功")}func main() {http.HandleFunc("/upload", uploadFile)http.ListenAndServe(":8000", nil)}

上述代码创建了一个HTTP服务器,监听在localhost:8000上。当客户端发送一个POST请求到/upload路径时,服务器将接收到的文件保存到本地。

在客户端发送请求时,需要将要上传的文件作为multipart/form-data类型的请求体中的一个字段进行传递,字段的名称为file。可以使用curl命令进行测试:

$ curl -F "file=@/path/to/file" http://localhost:8000/upload

以上示例中,上传的文件将被保存在当前目录下,文件名与原文件名相同。

需要注意的是,上述示例没有实现上传进度的监控,如果需要监控上传进度,可以使用第三方库,如github.com/cheggaaa/pb

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言