直接上代码:
添加浏览器上传到服务器的路由
首先
- router.POST("/upload",Upload)
实现代码:
package upload
import (
"os"
"net/http"
"github.com/gin-gonic/gin"
"api/models/result/proto"
)
const filePath = "/xxxx"
func fileExist(filename string)bool{
_, err := os.Stat(filename)
if err == nil {
return true
}
if os.IsNotExist(err) {
return false
}
return false
}
func upload(c *gin.Context) {
result := &ResultProto.ResultMessage{
Code: http.StatusOK,
Message: "Successfully!",
}
file, err := c.FormFile("upload")
if err != nil {
result := &ResultProto.ResultMessage{
Code: http.StatusBadRequest,
Message: "Failed!",
}
c.JSON(http.StatusBadRequest, gin.H{"result": result,}) }
fileName := file.Filename
log.Info("fileName:\n",fileName)
//Delete if the file already exists
IsExists := fileExist(filePath+fileName)
if IsExists {
//删除旧-上传新
cmd("rm -rf "+filePath+fileName)
}
//c.SaveUploadedFile(文件,文件路径)
if err := c.SaveUploadedFile(file, filePath+fileName);
err != nil {
result := &ResultProto.ResultMessage{
Code: http.StatusBadRequest,
Message: "Failed!",
}
c.JSON(http.StatusBadRequest, gin.H{"result": result,})
log.Error("Failed :\n",err)
}else{
c.JSON(http.StatusOK, gin.H{"result": result,})
}
}
如果需要一次上传多个文件
//多文件一次上传 加【】,类似数组的意思
files := form.File["upload[]"]
for _, file := range files {
c.SaveUploadedFile(file, filePath+fileName)
}