# 文件上传
通过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