FileRouter.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package router
  2. import (
  3. "demo/share"
  4. "errors"
  5. "fmt"
  6. "github.com/gin-gonic/gin"
  7. "github.com/spf13/cast"
  8. "os"
  9. "time"
  10. )
  11. var (
  12. uploadFileKey = "upload.bat-key"
  13. filepath = "./file/resources/"
  14. )
  15. func FileRouter(engine *gin.RouterGroup) {
  16. //文件静态资源,可以直接访问静态资源文件
  17. user := engine.Group("/file")
  18. {
  19. //文章上传
  20. //user.POST("/upload", uploadHandler)
  21. PushRouter(user, "POST", "/upload", uploadHandler)
  22. PushRouter(user, "DELETE", "", DeleteFile)
  23. }
  24. }
  25. // 文件上传
  26. func uploadHandler(c *gin.Context) {
  27. header, err := c.FormFile("file")
  28. fmt.Println("header", header.Size)
  29. if err != nil {
  30. c.JSON(200, CreateResultError(400, "上传错误"))
  31. return
  32. }
  33. fmt.Println("header", header.Size)
  34. //dst := header.Filename
  35. // gin 简单做了封装,拷贝了文件流
  36. //if err := c.SaveUploadedFile(header, dst); err != nil {
  37. // c.JSON(200, CreateResultError(400, "上传错误"))
  38. // return
  39. //}
  40. //上传到的路径
  41. //path := 'resource/public/uploads/20060102150405test.xlsx'
  42. header.Filename = fmt.Sprintf("%s%s", time.Now().Format("20060102150405"), header.Filename) // 文件名格式 自己可以改 建议保证唯一性
  43. path := filepath + header.Filename //路径+文件名上传
  44. // 上传文件到指定的目录
  45. err = c.SaveUploadedFile(header, path)
  46. if err != nil {
  47. err = errors.New(fmt.Sprintf("上传失败,%v", err))
  48. return
  49. }
  50. c.JSON(200, CreateResultData(map[string]interface{}{
  51. "url": "/api/static/" + header.Filename,
  52. }))
  53. }
  54. // DeleteFile 文件上传
  55. func DeleteFile(c *gin.Context) {
  56. data := share.GetJsonAnyParam(c)
  57. fileUrl, _ := data("fileUrl")
  58. s, err := os.Stat(cast.ToString(fileUrl))
  59. if os.IsNotExist(err) {
  60. c.JSON(200, CreateResultError(400, "文件不存在"))
  61. return
  62. }
  63. if s.IsDir() {
  64. c.JSON(200, CreateResultError(400, "路径不存在"))
  65. return
  66. }
  67. err = os.Remove(cast.ToString(fileUrl))
  68. if err != nil {
  69. c.JSON(200, CreateResultError(400, "删除失败"))
  70. return
  71. }
  72. c.JSON(200, CreateResult())
  73. }