Home >Backend Development >Golang >How to Receive and Process Uploaded Files in Go using net/http?
Receiving Uploaded Files with Golang and net/http
When working with an HTTP server, it's common to handle file uploads. In Go, using the net/http package, you can set up endpoints to receive and process uploaded files.
Consider the following code snippet:
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) ... }
Inside the uploadFile function, you need to parse the uploaded file from the request:
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) } ... }
The file object represents the uploaded file, while header provides information about the file, such as its filename and size. You can then work with the file contents as needed.
For example, you could save the file to disk:
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) } ...
Alternatively, you could process the file contents directly:
defer file.Close() data, err := ioutil.ReadAll(file) if err != nil { log.Fatal(err) } fmt.Println(string(data)) ...
In this way, you can receive and handle uploaded files using Go's net/http package.
The above is the detailed content of How to Receive and Process Uploaded Files in Go using net/http?. For more information, please follow other related articles on the PHP Chinese website!