diff options
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/file/send-drive-file.ts | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/server/file/send-drive-file.ts b/src/server/file/send-drive-file.ts index 691d3bf848..c57648bb7a 100644 --- a/src/server/file/send-drive-file.ts +++ b/src/server/file/send-drive-file.ts @@ -1,6 +1,7 @@ import * as Koa from 'koa'; import * as send from 'koa-send'; import * as mongodb from 'mongodb'; +import * as rename from 'rename'; import DriveFile, { getDriveFileBucket } from '../../models/drive-file'; import DriveFileThumbnail, { getDriveFileThumbnailBucket } from '../../models/drive-file-thumbnail'; import DriveFileWebpublic, { getDriveFileWebpublicBucket } from '../../models/drive-file-webpublic'; @@ -62,10 +63,12 @@ export default async function(ctx: Koa.BaseContext) { if (thumb != null) { ctx.set('Content-Type', 'image/jpeg'); + ctx.set('Content-Disposition', `filename="${rename(file.filename, { suffix: '-thumb', extname: '.jpeg' })}"`); const bucket = await getDriveFileThumbnailBucket(); ctx.body = bucket.openDownloadStream(thumb._id); } else { if (file.contentType.startsWith('image/')) { + ctx.set('Content-Disposition', `filename="${file.filename}"`); await sendRaw(); } else { ctx.status = 404; @@ -79,15 +82,17 @@ export default async function(ctx: Koa.BaseContext) { if (web != null) { ctx.set('Content-Type', file.contentType); + ctx.set('Content-Disposition', `filename="${rename(file.filename, { suffix: '-web' })}"`); const bucket = await getDriveFileWebpublicBucket(); ctx.body = bucket.openDownloadStream(web._id); } else { + ctx.set('Content-Disposition', `filename="${file.filename}"`); await sendRaw(); } } else { if ('download' in ctx.query) { - ctx.set('Content-Disposition', 'attachment'); + ctx.set('Content-Disposition', `attachment; filename="${file.filename}`); } await sendRaw(); |