mirror of https://github.com/Xhofe/alist
fix(local): directory handle (#2262)
* fix(local): check symlink dir * fix(local): set size of dir to 0 (close #2264)pull/2274/head
parent
e05e2fd663
commit
cdcbfb24c4
|
@ -77,12 +77,17 @@ func (d *Local) List(ctx context.Context, dir model.Obj, args model.ListArgs) ([
|
||||||
thumb = utils.EncodePath(thumb, true)
|
thumb = utils.EncodePath(thumb, true)
|
||||||
thumb += "?type=thumb"
|
thumb += "?type=thumb"
|
||||||
}
|
}
|
||||||
|
isFolder := f.IsDir() || isSymlinkDir(f, fullPath)
|
||||||
|
size := f.Size()
|
||||||
|
if isFolder {
|
||||||
|
size = 0
|
||||||
|
}
|
||||||
file := model.ObjThumb{
|
file := model.ObjThumb{
|
||||||
Object: model.Object{
|
Object: model.Object{
|
||||||
Name: f.Name(),
|
Name: f.Name(),
|
||||||
Modified: f.ModTime(),
|
Modified: f.ModTime(),
|
||||||
Size: f.Size(),
|
Size: size,
|
||||||
IsFolder: f.IsDir(),
|
IsFolder: isFolder,
|
||||||
},
|
},
|
||||||
Thumbnail: model.Thumbnail{
|
Thumbnail: model.Thumbnail{
|
||||||
Thumbnail: thumb,
|
Thumbnail: thumb,
|
||||||
|
@ -101,12 +106,17 @@ func (d *Local) Get(ctx context.Context, path string) (model.Obj, error) {
|
||||||
}
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
isFolder := f.IsDir() || isSymlinkDir(f, path)
|
||||||
|
size := f.Size()
|
||||||
|
if isFolder {
|
||||||
|
size = 0
|
||||||
|
}
|
||||||
file := model.Object{
|
file := model.Object{
|
||||||
Path: path,
|
Path: path,
|
||||||
Name: f.Name(),
|
Name: f.Name(),
|
||||||
Modified: f.ModTime(),
|
Modified: f.ModTime(),
|
||||||
Size: f.Size(),
|
Size: size,
|
||||||
IsFolder: f.IsDir(),
|
IsFolder: isFolder,
|
||||||
}
|
}
|
||||||
return &file, nil
|
return &file, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -1 +1,22 @@
|
||||||
package local
|
package local
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io/fs"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
)
|
||||||
|
|
||||||
|
func isSymlinkDir(f fs.FileInfo, path string) bool {
|
||||||
|
if f.Mode()&os.ModeSymlink == os.ModeSymlink {
|
||||||
|
dst, err := os.Readlink(filepath.Join(path, f.Name()))
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
stat, err := os.Stat(dst)
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return stat.IsDir()
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue