summaryrefslogtreecommitdiff
path: root/src/server/file/send-drive-file.ts
diff options
context:
space:
mode:
authortamaina <tamaina@hotmail.co.jp>2019-03-18 13:20:49 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2019-03-18 13:20:49 +0900
commitde47a17be7ce541fcd5c8ee698c2ef4aa926b5fb (patch)
tree667cc893d415dad545d5bf6a054fa7ce67982f1f /src/server/file/send-drive-file.ts
parent10.97.2 (diff)
downloadsharkey-de47a17be7ce541fcd5c8ee698c2ef4aa926b5fb.tar.gz
sharkey-de47a17be7ce541fcd5c8ee698c2ef4aa926b5fb.tar.bz2
sharkey-de47a17be7ce541fcd5c8ee698c2ef4aa926b5fb.zip
Improve drive downloading (#4523)
* Improve drive file downloading * fix name * wtf crlf * semicolon
Diffstat (limited to 'src/server/file/send-drive-file.ts')
-rw-r--r--src/server/file/send-drive-file.ts7
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();