精通Go语言文件上传:深入探讨r.FormFile函数的应用与优化
package main
import (
"log"
"net/http"
"os"
"github.com/gin-gonic/gin"
)
func main() {
router := gin.Default()
router.MaxMultipartMemory = 8 << 20 // 设置最大内存为8 MiB
router.POST("/upload", func(c *gin.Context) {
// 单文件上传
file, err := c.FormFile("file")
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
// 保存上传的文件到指定的目录下
if err := c.SaveUploadedFile(file, "./uploads/"+file.Filename); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, gin.H{"message": "文件上传成功!", "filename": file.Filename})
})
log.Println("服务器运行在 : http://localhost:8080")
router.Run(":8080")
}
这段代码使用了gin-gonic/gin
框架来简化HTTP服务的创建和文件上传的处理流程。它设置了最大内存限制为8MB,并提供了一个/upload
的POST路由来处理文件上传。如果上传的文件超过设定的内存限制,HTTP 413(Request Entity Too Large)状态码将会被返回。
评论已关闭