Improve drive downloading (#4523)

* Improve drive file downloading

* fix name

* wtf crlf

* semicolon
This commit is contained in:
tamaina 2019-03-18 13:20:49 +09:00 committed by syuilo
parent d38fc490ad
commit de47a17be7
6 changed files with 22 additions and 4 deletions

View file

@ -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();