FileRouter.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package router
  2. import (
  3. "errors"
  4. "fmt"
  5. "github.com/gin-gonic/gin"
  6. "time"
  7. )
  8. var (
  9. uploadFileKey = "upload.bat-key"
  10. filepath = "./file/resources/"
  11. )
  12. func FileRouter(engine *gin.RouterGroup) {
  13. //文件静态资源,可以直接访问静态资源文件
  14. user := engine.Group("/file")
  15. {
  16. //文章上传
  17. //user.POST("/upload", uploadHandler)
  18. PushRouter(user, "POST", "/upload", uploadHandler)
  19. }
  20. }
  21. // 文件上传
  22. func uploadHandler(c *gin.Context) {
  23. header, err := c.FormFile("file")
  24. fmt.Println("header", header.Size)
  25. if err != nil {
  26. c.JSON(200, CreateResultError(400, "上传错误"))
  27. return
  28. }
  29. fmt.Println("header", header.Size)
  30. //dst := header.Filename
  31. // gin 简单做了封装,拷贝了文件流
  32. //if err := c.SaveUploadedFile(header, dst); err != nil {
  33. // c.JSON(200, CreateResultError(400, "上传错误"))
  34. // return
  35. //}
  36. //上传到的路径
  37. //path := 'resource/public/uploads/20060102150405test.xlsx'
  38. header.Filename = fmt.Sprintf("%s%s", time.Now().Format("20060102150405"), header.Filename) // 文件名格式 自己可以改 建议保证唯一性
  39. path := filepath + header.Filename //路径+文件名上传
  40. // 上传文件到指定的目录
  41. err = c.SaveUploadedFile(header, path)
  42. if err != nil {
  43. err = errors.New(fmt.Sprintf("上传失败,%v", err))
  44. return
  45. }
  46. c.JSON(200, CreateResultData(map[string]interface{}{
  47. "url": "/api/static/" + header.Filename,
  48. }))
  49. }