多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 文件上传 通过ctx.Request().FormFile(key string) (*UploadFile, error) 获取上传文件 ## 服务端 ~~~go package main import ( "fmt" "github.com/devfeel/dotweb" "strconv" ) func main() { //初始化DotServer app := dotweb.New() //启用开发模式 app.SetDevelopmentMode() //启用访问日志 app.SetEnabledLog(true) app.UseRequestLog() //设置路由 InitRoute(app.HttpServer) // 开始服务 port := 8080 fmt.Println("dotweb.StartServer => " + strconv.Itoa(port)) err := app.StartServer(port) fmt.Println("dotweb.StartServer error => ", err) } func InitRoute(server *dotweb.HttpServer) { server.Router().POST("/file", FileUpload) } func FileUpload(ctx dotweb.Context) error { upload, err := ctx.Request().FormFile("file") if err != nil { _, err := ctx.WriteString("FormFile error " + err.Error()) return err } else { _, err = upload.SaveFile("d:\\" + upload.FileName()) if err != nil { _, err := ctx.WriteString("SaveFile error => " + err.Error()) return err } else { _, err := ctx.WriteString("SaveFile success || " + upload.FileName() + " || " + upload.GetFileExt() + " || " + fmt.Sprint(upload.Size())) return err } } } ~~~ ## 前端页面 ~~~html <html> <head> <title>文件上传</title> <meta http-equiv="content-type" content="text/html; charset=utf-8"> </head> <body> <form enctype="multipart/form-data" action="http://127.0.0.1:8080/file" method="post"> 第一步:<input type="file" name="file" /> <br><br> 第二步:<input type="submit" value="上传" /> </form> </body> </html> ~~~ 访问该页面后,点击上传,返回类似: ~~~ SaveFile success || 人员名单.xls || .xls || 67584 ~~~ 以上,为一个上传文件后获取文件名、文件扩展名、文件大小以及保存到指定本地目录的完整示例代码。 ## 示例代码 https://github.com/devfeel/dotweb-example/tree/master/uploadfile