From de47a17be7ce541fcd5c8ee698c2ef4aa926b5fb Mon Sep 17 00:00:00 2001 From: tamaina Date: Mon, 18 Mar 2019 13:20:49 +0900 Subject: Improve drive downloading (#4523) * Improve drive file downloading * fix name * wtf crlf * semicolon --- src/server/file/send-drive-file.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/server/file/send-drive-file.ts') 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(); -- cgit v1.2.3-freya