You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
820 B
48 lines
820 B
package main
|
|
|
|
import (
|
|
"io"
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/go-kratos/kratos/v2"
|
|
"github.com/go-kratos/kratos/v2/transport/http"
|
|
)
|
|
|
|
func uploadFile(ctx http.Context) error {
|
|
req := ctx.Request()
|
|
|
|
fileName := req.FormValue("name")
|
|
file, handler, err := req.FormFile("file")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer file.Close()
|
|
|
|
f, err := os.OpenFile(handler.Filename, os.O_WRONLY|os.O_CREATE, 0o666)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer f.Close()
|
|
_, _ = io.Copy(f, file)
|
|
|
|
return ctx.String(200, "File "+fileName+" Uploaded successfully")
|
|
}
|
|
|
|
func main() {
|
|
httpSrv := http.NewServer(
|
|
http.Address(":8000"),
|
|
)
|
|
route := httpSrv.Route("/")
|
|
route.POST("/upload", uploadFile)
|
|
|
|
app := kratos.New(
|
|
kratos.Name("upload"),
|
|
kratos.Server(
|
|
httpSrv,
|
|
),
|
|
)
|
|
if err := app.Run(); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|