serve: add content-disposition handling for get/head requests

This commit is contained in:
hiddenmarten 2025-01-22 17:57:09 +01:00
parent 64043c2942
commit 887c586eb4
2 changed files with 9 additions and 20 deletions

View File

@ -404,23 +404,3 @@ func TestStatJSON(t *testing.T) {
assert.True(t, err != nil || f.Features().BucketBased, "Need an error for non bucket based backends")
})
}
//func TestAutoFilename(t *testing.T) {
// ctx := context.Background()
// r := fstest.NewRun(t)
// file1 := r.WriteBoth(ctx, "file1", "file1", t1)
// r.CheckRemoteItems(t, file1)
//
// // Metadata update for "AutoFilename" test case
// if item.Metadata == nil {
// item.Metadata = fs.Metadata{}
// }
// item.Metadata["Content-Disposition"] = "attachment; filename=\"file_name_from_metadata\""
//
// got, err := operations.StatJSON(ctx, r.Fremote, "file1", &operations.ListJSONOpt{
// AutoFilename: true,
// })
// require.NoError(t, err)
// require.NotNil(t, got)
// assert.Equal(t, "file_name_from_metadata", got.Name)
//}

View File

@ -39,6 +39,15 @@ func Object(w http.ResponseWriter, r *http.Request, o fs.Object) {
modTime := o.ModTime(r.Context())
w.Header().Set("Last-Modified", modTime.UTC().Format(http.TimeFormat))
// Set content disposition if available
metadata, err := fs.GetMetadata(r.Context(), o)
if err != nil {
fs.Debugf(o, "Request get metadata error: %v", err)
}
if metadata != nil && metadata["content-disposition"] != "" {
w.Header().Set("Content-Disposition", metadata["content-disposition"])
}
if r.Method == "HEAD" {
return
}