MM-15480: Add server support for Range on files (#10892)

Этот коммит содержится в:
Jesús Espino
2019-05-23 16:46:28 +02:00
коммит произвёл GitHub
родитель 87ff64ea6d
Коммит edd3cc890f
5 изменённых файлов: 15 добавлений и 10 удалений

Просмотреть файл

@@ -546,7 +546,7 @@ func getFile(c *Context, w http.ResponseWriter, r *http.Request) {
}
defer fileReader.Close()
err = writeFileResponse(info.Name, info.MimeType, info.Size, *c.App.Config().ServiceSettings.WebserverMode, fileReader, forceDownload, w, r)
err = writeFileResponse(info.Name, info.MimeType, info.Size, time.Unix(0, info.UpdateAt*int64(1000*1000)), *c.App.Config().ServiceSettings.WebserverMode, fileReader, forceDownload, w, r)
if err != nil {
c.Err = err
return
@@ -588,7 +588,7 @@ func getFileThumbnail(c *Context, w http.ResponseWriter, r *http.Request) {
}
defer fileReader.Close()
err = writeFileResponse(info.Name, THUMBNAIL_IMAGE_TYPE, 0, *c.App.Config().ServiceSettings.WebserverMode, fileReader, forceDownload, w, r)
err = writeFileResponse(info.Name, THUMBNAIL_IMAGE_TYPE, 0, time.Unix(0, info.UpdateAt*int64(1000*1000)), *c.App.Config().ServiceSettings.WebserverMode, fileReader, forceDownload, w, r)
if err != nil {
c.Err = err
return
@@ -663,7 +663,7 @@ func getFilePreview(c *Context, w http.ResponseWriter, r *http.Request) {
}
defer fileReader.Close()
err = writeFileResponse(info.Name, PREVIEW_IMAGE_TYPE, 0, *c.App.Config().ServiceSettings.WebserverMode, fileReader, forceDownload, w, r)
err = writeFileResponse(info.Name, PREVIEW_IMAGE_TYPE, 0, time.Unix(0, info.UpdateAt*int64(1000*1000)), *c.App.Config().ServiceSettings.WebserverMode, fileReader, forceDownload, w, r)
if err != nil {
c.Err = err
return
@@ -729,14 +729,14 @@ func getPublicFile(c *Context, w http.ResponseWriter, r *http.Request) {
}
defer fileReader.Close()
err = writeFileResponse(info.Name, info.MimeType, info.Size, *c.App.Config().ServiceSettings.WebserverMode, fileReader, false, w, r)
err = writeFileResponse(info.Name, info.MimeType, info.Size, time.Unix(0, info.UpdateAt*int64(1000*1000)), *c.App.Config().ServiceSettings.WebserverMode, fileReader, false, w, r)
if err != nil {
c.Err = err
return
}
}
func writeFileResponse(filename string, contentType string, contentSize int64, webserverMode string, fileReader io.Reader, forceDownload bool, w http.ResponseWriter, r *http.Request) *model.AppError {
func writeFileResponse(filename string, contentType string, contentSize int64, lastModification time.Time, webserverMode string, fileReader io.ReadSeeker, forceDownload bool, w http.ResponseWriter, r *http.Request) *model.AppError {
w.Header().Set("Cache-Control", "private, no-cache")
w.Header().Set("X-Content-Type-Options", "nosniff")
@@ -790,7 +790,7 @@ func writeFileResponse(filename string, contentType string, contentSize int64, w
w.Header().Set("X-Frame-Options", "DENY")
w.Header().Set("Content-Security-Policy", "Frame-ancestors 'none'")
io.Copy(w, fileReader)
http.ServeContent(w, r, filename, lastModification, fileReader)
return nil
}