diff --git a/weed/filer/filer_search.go b/weed/filer/filer_search.go index b26959cb0..2fe83b49d 100644 --- a/weed/filer/filer_search.go +++ b/weed/filer/filer_search.go @@ -38,7 +38,17 @@ func (f *Filer) ListDirectoryEntries(ctx context.Context, p util.FullPath, start } } - return entries, err + //Distinguish between folders and common files, folders are listed first + var folderEntries, commonEntries []*Entry + for i, _ := range entries { + if entries[i].IsDirectory() { + folderEntries = append(folderEntries, entries[i]) + } else { + commonEntries = append(commonEntries, entries[i]) + } + } + folderEntries = append(folderEntries, commonEntries...) + return folderEntries, err } func (f *Filer) doListPatternMatchedEntries(ctx context.Context, p util.FullPath, startFileName string, inclusive bool, limit int, prefix, restNamePattern string) (matchedEntries []*Entry, missedCount int, lastFileName string, err error) { diff --git a/weed/server/filer_server_handlers_read.go b/weed/server/filer_server_handlers_read.go index 4d61193ec..28027a009 100644 --- a/weed/server/filer_server_handlers_read.go +++ b/weed/server/filer_server_handlers_read.go @@ -100,6 +100,16 @@ func (fs *FilerServer) GetOrHeadHandler(w http.ResponseWriter, r *http.Request, w.Header().Set(k, string(v)) } + //Add some custom headers that need to be exposed + seaweedHeaders := []string{} + for i, _ := range w.Header() { + if strings.Contains(i, "Seaweed") { + seaweedHeaders = append(seaweedHeaders, i) + } + } + seaweedHeaders = append(seaweedHeaders, "Content-Disposition") + w.Header().Set("Access-Control-Expose-Headers", strings.Join(seaweedHeaders, ",")) + //set tag count if r.Method == "GET" { tagCount := 0