diff --git a/internal/vfs/s3fs.go b/internal/vfs/s3fs.go index 9242ca8a..0f82d67f 100644 --- a/internal/vfs/s3fs.go +++ b/internal/vfs/s3fs.go @@ -165,6 +165,10 @@ func (fs *S3Fs) Stat(name string) (os.FileInfo, error) { // Some S3 providers (like SeaweedFS) remove the trailing '/' from object keys. // So we check some common content types to detect if this is a "directory". isDir := util.Contains(s3DirMimeTypes, util.GetStringFromPointer(obj.ContentType)) + if obj.ContentLength == 0 && !isDir { + _, err = fs.headObject(name + "/") + isDir = err == nil + } return updateFileInfoModTime(fs.getStorageID(), name, NewFileInfo(name, isDir, obj.ContentLength, util.GetTimeFromPointer(obj.LastModified), false)) }