This commit is contained in:
syuilo 2018-05-03 20:12:08 +09:00
parent 15e4cf1243
commit faabb039a5
1 changed files with 15 additions and 10 deletions

View File

@ -35,12 +35,23 @@ export default async function(ctx: Koa.Context) {
return; return;
} }
const sendRaw = async () => {
const bucket = await getDriveFileBucket();
const readable = bucket.openDownloadStream(fileId);
readable.on('error', commonReadableHandlerGenerator(ctx));
ctx.set('Content-Type', file.contentType);
ctx.body = readable;
};
if ('thumbnail' in ctx.query) { if ('thumbnail' in ctx.query) {
// 動画か画像以外 // 画像以外
if (!/^image\/.*$/.test(file.contentType) && !/^video\/.*$/.test(file.contentType)) { if (!file.contentType.startsWith('image/')) {
const readable = fs.createReadStream(`${__dirname}/assets/thumbnail-not-available.png`); const readable = fs.createReadStream(`${__dirname}/assets/thumbnail-not-available.png`);
ctx.set('Content-Type', 'image/png'); ctx.set('Content-Type', 'image/png');
ctx.body = readable; ctx.body = readable;
} else if (file.contentType == 'image/gif') {
// GIF
await sendRaw();
} else { } else {
const thumb = await DriveFileThumbnail.findOne({ 'metadata.originalId': fileId }); const thumb = await DriveFileThumbnail.findOne({ 'metadata.originalId': fileId });
if (thumb != null) { if (thumb != null) {
@ -48,9 +59,7 @@ export default async function(ctx: Koa.Context) {
const bucket = await getDriveFileThumbnailBucket(); const bucket = await getDriveFileThumbnailBucket();
ctx.body = bucket.openDownloadStream(thumb._id); ctx.body = bucket.openDownloadStream(thumb._id);
} else { } else {
ctx.set('Content-Type', file.contentType); await sendRaw();
const bucket = await getDriveFileBucket();
ctx.body = bucket.openDownloadStream(fileId);
} }
} }
} else { } else {
@ -58,10 +67,6 @@ export default async function(ctx: Koa.Context) {
ctx.set('Content-Disposition', 'attachment'); ctx.set('Content-Disposition', 'attachment');
} }
const bucket = await getDriveFileBucket(); await sendRaw();
const readable = bucket.openDownloadStream(fileId);
readable.on('error', commonReadableHandlerGenerator(ctx));
ctx.set('Content-Type', file.contentType);
ctx.body = readable;
} }
} }