使用 Golang 和 net/http 接收上传的文件
使用 HTTP 服务器时,处理文件上传是很常见的。在 Go 中,使用 net/http 包,您可以设置端点来接收和处理上传的文件。
考虑以下代码片段:
package main import ( "fmt" "github.com/gorilla/mux" "net/http" ) func main() { ... // Assuming you already have a router setup, add the following: router. Path("/upload"). Methods("POST"). HandlerFunc(uploadFile) ... }
在 uploadFile 函数中,您需要从请求中解析上传的文件:
func uploadFile(w http.ResponseWriter, r *http.Request) { err := r.ParseMultipartForm(5 * 1024 * 1024) if err != nil { panic(err) } // Get the file from the form file, header, err := r.FormFile("file") if err != nil { panic(err) } ... }
文件对象代表上传的文件,而 header 提供有关文件的信息,例如作为其文件名和大小。然后,您可以根据需要处理文件内容。
例如,您可以将文件保存到磁盘:
f, err := os.Create(header.Filename) if err != nil { log.Fatal(err) } defer f.Close() if _, err := io.Copy(f, file); err != nil { log.Fatal(err) } ...
或者,您可以直接处理文件内容:
defer file.Close() data, err := ioutil.ReadAll(file) if err != nil { log.Fatal(err) } fmt.Println(string(data)) ...
这样就可以使用Go的net/http包接收并处理上传的文件了。
以上是如何在 Go 中使用 net/http 接收并处理上传的文件?的详细内容。更多信息请关注PHP中文网其他相关文章!