Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
golang upload client and server
// curl -X POST -H "Content-Type: application/octet-stream" --data-binary '@filename' http://127.0.0.1:5050/upload
package main
import (
"fmt"
"io"
"net/http"
"os"
"time"
"io/ioutil"
)
func uploadHandler(w http.ResponseWriter, r *http.Request) {
file, err := os.Create("./result")
if err != nil {
panic(err)
}
n, err := io.Copy(file, r.Body)
if err != nil {
panic(err)
}
w.Write([]byte(fmt.Sprintf("%d bytes are recieved.\n", n)))
}
func main() {
http.HandleFunc("/upload", uploadHandler)
go func() {
time.Sleep(time.Second * 1)
upload()
}()
http.ListenAndServe(":5050", nil)
}
func upload() {
file, err := os.Open("./filename")
if err != nil {
panic(err)
}
defer file.Close()
res, err := http.Post("http://127.0.0.1:5050/upload", "binary/octet-stream", file)
if err != nil {
panic(err)
}
defer res.Body.Close()
message, _ := ioutil.ReadAll(res.Body)
fmt.Printf(string(message))
}
@wingyplus

This comment has been minimized.

Copy link

wingyplus commented Mar 7, 2018

@Keithwachira

This comment has been minimized.

Copy link

Keithwachira commented Jul 8, 2018

Thank you for this it helped me in writing my go file upload handler

@Henry75m39

This comment has been minimized.

Copy link

Henry75m39 commented Jun 25, 2019

I'm gonna to try it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.