web client: try to prevent browsers from caching requests

Fixes #493
This commit is contained in:
Nicola Murino
2021-08-03 19:58:03 +02:00
parent 9541843ff7
commit 0503215e7a
2 changed files with 7 additions and 2 deletions

View File

@@ -80,6 +80,7 @@ type filesPage struct {
CanCreateDirs bool CanCreateDirs bool
CanRename bool CanRename bool
CanDelete bool CanDelete bool
CanDownload bool
Error string Error string
Paths []dirMapping Paths []dirMapping
} }
@@ -100,7 +101,7 @@ type credentialsPage struct {
} }
func getFileObjectURL(baseDir, name string) string { func getFileObjectURL(baseDir, name string) string {
return fmt.Sprintf("%v?path=%v", webClientFilesPath, url.QueryEscape(path.Join(baseDir, name))) return fmt.Sprintf("%v?path=%v&_=%v", webClientFilesPath, url.QueryEscape(path.Join(baseDir, name)), time.Now().UTC().Unix())
} }
func getFileObjectModTime(t time.Time) string { func getFileObjectModTime(t time.Time) string {
@@ -211,6 +212,7 @@ func renderFilesPage(w http.ResponseWriter, r *http.Request, dirName, error stri
CanCreateDirs: user.CanAddDirsFromWeb(dirName), CanCreateDirs: user.CanAddDirsFromWeb(dirName),
CanRename: user.CanRenameFromWeb(dirName, dirName), CanRename: user.CanRenameFromWeb(dirName, dirName),
CanDelete: user.CanDeleteFromWeb(dirName), CanDelete: user.CanDeleteFromWeb(dirName),
CanDownload: user.HasPerm(dataprovider.PermDownload, dirName),
} }
paths := []dirMapping{} paths := []dirMapping{}
if dirName != "/" { if dirName != "/" {

View File

@@ -467,7 +467,8 @@
var files = fixedEncodeURIComponent(JSON.stringify(filesArray)); var files = fixedEncodeURIComponent(JSON.stringify(filesArray));
var downloadURL = '{{.DownloadURL}}'; var downloadURL = '{{.DownloadURL}}';
var currentDir = '{{.CurrentDir}}'; var currentDir = '{{.CurrentDir}}';
window.location = `${downloadURL}?path=${currentDir}&files=${files}`; var ts = new Date().getTime().toString();
window.location = `${downloadURL}?path=${currentDir}&files=${files}&_=${ts}`;
}, },
enabled: false enabled: false
}; };
@@ -614,7 +615,9 @@
"initComplete": function (settings, json) { "initComplete": function (settings, json) {
table.button().add(0, 'refresh'); table.button().add(0, 'refresh');
table.button().add(0, 'pageLength'); table.button().add(0, 'pageLength');
{{if .CanDownload}}
table.button().add(0, 'download'); table.button().add(0, 'download');
{{end}}
{{if .CanDelete}} {{if .CanDelete}}
table.button().add(0, 'delete'); table.button().add(0, 'delete');
{{end}} {{end}}