mirror of
https://github.com/rclone/rclone.git
synced 2025-04-19 01:59:00 +08:00
serve: add content-disposition handling for get/head requests
This commit is contained in:
parent
64043c2942
commit
887c586eb4
@ -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)
|
||||
//}
|
||||
|
@ -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
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user