From 6591769a07b0f48007cfa1c39b8ae1a47578d220 Mon Sep 17 00:00:00 2001 From: "Amir.h Yeganemehr" Date: Sun, 13 Nov 2022 01:48:40 +0330 Subject: [PATCH] Handle empty directories with mimetype Signed-off-by: Amir.h Yeganemehr --- internal/vfs/s3fs.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/internal/vfs/s3fs.go b/internal/vfs/s3fs.go index 7f172a6f..c851625a 100644 --- a/internal/vfs/s3fs.go +++ b/internal/vfs/s3fs.go @@ -159,8 +159,10 @@ func (fs *S3Fs) Stat(name string) (os.FileInfo, error) { } obj, err := fs.headObject(name) if err == nil { - // a "dir" has a trailing "/" so we cannot have a directory here - return updateFileInfoModTime(fs.getStorageID(), name, NewFileInfo(name, false, obj.ContentLength, + // Some s3 providers (like seaweedfs) do not support traling '/' in object key. + // So We have to check Content-type of the object and detect that the object whether is an empty directory or an ordinary object. + isDir := util.GetStringFromPointer(obj.ContentType) == s3DirMimeType + return updateFileInfoModTime(fs.getStorageID(), name, NewFileInfo(name, isDir, obj.ContentLength, util.GetTimeFromPointer(obj.LastModified), false)) } if !fs.IsNotExist(err) {