package main import ( "fmt" "io" "log" "net/http" "os" ) func getRoot(w http.ResponseWriter, r *http.Request) { fmt.Printf("Received connection\n") file, err := os.Open("./index.html") if err != nil { log.Printf("Error happened opening index.html: %v\n", err) } defer file.Close() data, err := io.ReadAll(file) if err != nil { log.Printf("Error happened reading data: %v\n", err) } fmt.Fprint(w, string(data)) } func uploadFile(w http.ResponseWriter, r *http.Request) { fmt.Printf("Received upload!\n") fmt.Fprintln(w, "You have uploaded something") file, header, err := r.FormFile("file") if err != nil { log.Printf("Error happened receiving file: %v\n", err) } fmt.Fprintf(w, "%v", header.Header) f, err := os.OpenFile("./temp/"+header.Filename, os.O_WRONLY|os.O_CREATE, 0660) if err != nil { log.Printf("Error happened opening file: %v\n", err) } io.Copy(f, file) defer file.Close() } func main() { http.HandleFunc("/", getRoot) http.HandleFunc("/api/upload", uploadFile) fmt.Println("Listening on port 8080...") err := http.ListenAndServe(":8080", nil) if err != nil { log.Fatal(err) } }