wip
This commit is contained in:
parent
a3bd4ba426
commit
3368fe8552
20 changed files with 582 additions and 609 deletions
30
src/server/file/send-drive-file.ts
Normal file
30
src/server/file/send-drive-file.ts
Normal file
|
@ -0,0 +1,30 @@
|
|||
import * as Koa from 'koa';
|
||||
import * as send from 'koa-send';
|
||||
import * as mongodb from 'mongodb';
|
||||
import DriveFile, { getGridFSBucket } from '../../models/drive-file';
|
||||
import pour from './pour';
|
||||
|
||||
export default async function(ctx: Koa.Context) {
|
||||
// Validate id
|
||||
if (!mongodb.ObjectID.isValid(ctx.params.id)) {
|
||||
ctx.throw(400, 'incorrect id');
|
||||
return;
|
||||
}
|
||||
|
||||
const fileId = new mongodb.ObjectID(ctx.params.id);
|
||||
|
||||
// Fetch drive file
|
||||
const file = await DriveFile.findOne({ _id: fileId });
|
||||
|
||||
if (file == null) {
|
||||
ctx.status = 404;
|
||||
await send(ctx, `${__dirname}/assets/dummy.png`);
|
||||
return;
|
||||
}
|
||||
|
||||
const bucket = await getGridFSBucket();
|
||||
|
||||
const readable = bucket.openDownloadStream(fileId);
|
||||
|
||||
pour(readable, file.contentType, ctx);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue