Create file controller to upload audio document

This commit is contained in:
Gregoire Parant 2020-09-20 19:01:21 +02:00
parent 45ad4bbb36
commit 844bffa988
6 changed files with 171 additions and 19 deletions

View file

@ -1,7 +1,11 @@
import {Application, Request, Response} from "express";
import {Application, Request, RequestHandler, Response} from "express";
import {OK} from "http-status-codes";
import {URL_ROOM_STARTED} from "_Enum/EnvironmentVariable";
import {uuid} from "uuidv4";
import multer from 'multer';
import fs from "fs";
const upload = multer({ dest: 'dist/files/' });
export class FileController {
App : Application;
@ -13,26 +17,30 @@ export class FileController {
}
uploadAudioMessage(){
this.App.post("/upload-audio-message", (req: Request, res: Response) => {
this.App.post("/upload-audio-message", (upload.single('file') as RequestHandler), (req: Request, res: Response) => {
//TODO check user connected and admin role
//TODO upload audio message
const audioMessageId = uuid();
fs.copyFileSync(req.file.path, `dist/files/${audioMessageId}`);
fs.unlinkSync(req.file.path);
return res.status(OK).send({
id: audioMessageId,
audioMessageUrl: `/audi-message/${audioMessageId}`,
path: `/download-audio-message/${audioMessageId}`
});
});
}
downloadAudioMessage(){
this.App.post("/download-audio-message/:id", (req: Request, res: Response) => {
this.App.get("/download-audio-message/:id", (req: Request, res: Response) => {
//TODO check user connected and admin role
//TODO upload audio message
let audiMessageId = req.params.id;
const audiMessageId = req.params.id;
let fs = require('fs');
let path = `/dist/files/${audiMessageId}`;
let file = fs.createReadStream(path);
const fs = require('fs');
const path = `dist/files/${audiMessageId}`;
const file = fs.createReadStream(path);
res.writeHead(200);
file.pipe(res);
});