summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/FileServerService.ts
diff options
context:
space:
mode:
authorMeiMei <30769358+mei23@users.noreply.github.com>2024-04-15 09:28:09 +0900
committerGitHub <noreply@github.com>2024-04-15 09:28:09 +0900
commitc687b4eaa558aa3138d81f8fa4d9bbc376d0bd6c (patch)
tree61629baca76032057d047cebf538c83766f699b5 /packages/backend/src/server/FileServerService.ts
parentchore: Use integrity for Redoc script (#13716) (diff)
downloadsharkey-c687b4eaa558aa3138d81f8fa4d9bbc376d0bd6c.tar.gz
sharkey-c687b4eaa558aa3138d81f8fa4d9bbc376d0bd6c.tar.bz2
sharkey-c687b4eaa558aa3138d81f8fa4d9bbc376d0bd6c.zip
fix(backend): nginx経由で/files/にRangeリクエストされた場合に正しく応答できないのを修正 (#13712)
* Fix files * CHANGELOG
Diffstat (limited to 'packages/backend/src/server/FileServerService.ts')
-rw-r--r--packages/backend/src/server/FileServerService.ts7
1 files changed, 4 insertions, 3 deletions
diff --git a/packages/backend/src/server/FileServerService.ts b/packages/backend/src/server/FileServerService.ts
index ce7702143e..9db3aa1bfb 100644
--- a/packages/backend/src/server/FileServerService.ts
+++ b/packages/backend/src/server/FileServerService.ts
@@ -214,6 +214,8 @@ export class FileServerService {
}
reply.header('Content-Type', FILE_TYPE_BROWSERSAFE.includes(image.type) ? image.type : 'application/octet-stream');
+ reply.header('Content-Length', file.file.size);
+ reply.header('Cache-Control', 'max-age=31536000, immutable');
reply.header('Content-Disposition',
contentDisposition(
'inline',
@@ -256,6 +258,7 @@ export class FileServerService {
return fs.createReadStream(file.path);
} else {
reply.header('Content-Type', FILE_TYPE_BROWSERSAFE.includes(file.file.type) ? file.file.type : 'application/octet-stream');
+ reply.header('Content-Length', file.file.size);
reply.header('Cache-Control', 'max-age=31536000, immutable');
reply.header('Content-Disposition', contentDisposition('inline', file.filename));
@@ -530,9 +533,7 @@ export class FileServerService {
if (!file.storedInternal) {
if (!(file.isLink && file.uri)) return '204';
const result = await this.downloadAndDetectTypeFromUrl(file.uri);
- if (!file.size) {
- file.size = (await fs.promises.stat(result.path)).size;
- }
+ file.size = (await fs.promises.stat(result.path)).size; // DB file.sizeは正確とは限らないので
return {
...result,
url: file.uri,