feat: report dir size correctly
This commit is contained in:
parent
18b264f0d2
commit
c9f7233da6
@ -12,6 +12,29 @@ import (
|
|||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func RecursivelyGetSize(completePath string) (int64, error) {
|
||||||
|
files, err := os.ReadDir(completePath)
|
||||||
|
if err != nil {
|
||||||
|
return -1, err
|
||||||
|
}
|
||||||
|
var sum int64
|
||||||
|
for _, f := range files {
|
||||||
|
dirEntryInfo, err := f.Info()
|
||||||
|
if err != nil {
|
||||||
|
return -1, err
|
||||||
|
}
|
||||||
|
dirEntrySize := dirEntryInfo.Size()
|
||||||
|
if f.IsDir() {
|
||||||
|
dirEntrySize, err = RecursivelyGetSize(path.Join(completePath, f.Name()))
|
||||||
|
if err != nil {
|
||||||
|
return -1, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sum += dirEntrySize
|
||||||
|
}
|
||||||
|
return sum, nil
|
||||||
|
}
|
||||||
|
|
||||||
func HandleList(c *fiber.Ctx) error {
|
func HandleList(c *fiber.Ctx) error {
|
||||||
encodedReq := c.Params("req")
|
encodedReq := c.Params("req")
|
||||||
req, err := url.QueryUnescape(encodedReq)
|
req, err := url.QueryUnescape(encodedReq)
|
||||||
@ -54,9 +77,16 @@ func HandleList(c *fiber.Ctx) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return c.Status(fiber.StatusInternalServerError).SendString("Internal server error!")
|
return c.Status(fiber.StatusInternalServerError).SendString("Internal server error!")
|
||||||
}
|
}
|
||||||
|
dirEntrySize := dirEntryInfo.Size()
|
||||||
|
if f.IsDir() {
|
||||||
|
dirEntrySize, err = RecursivelyGetSize(path.Join(completePath, f.Name()))
|
||||||
|
if err != nil {
|
||||||
|
return c.Status(fiber.StatusInternalServerError).SendString(err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
entries = append(entries, html.Entry{
|
entries = append(entries, html.Entry{
|
||||||
Name: f.Name(),
|
Name: f.Name(),
|
||||||
Size: dirEntryInfo.Size(),
|
Size: dirEntrySize,
|
||||||
IsDir: f.IsDir(),
|
IsDir: f.IsDir(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user