# 文件上傳
通過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