-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapi.js
More file actions
40 lines (36 loc) · 1.11 KB
/
Copy pathapi.js
File metadata and controls
40 lines (36 loc) · 1.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
const express = require("express");
const api = express.Router();
const multer = require("multer");
const upload = multer({ dest: "../uploads/" });
const fs = require("fs");
const util = require("util");
const unLinkFile = util.promisify(fs.unlink);
const { uploadFile, getFileStream } = require("./s3");
const modifyImage = require("./modifyImage");
const newImage = "newImage.png";
const image = "image.png";
api.get("/:key", async (req, res) => {
const key = req.params.key;
modifyImage(key)
.then(() => {
const fileStream = fs.createReadStream(newImage);
unLinkFile(newImage);
unLinkFile(image);
fileStream.pipe(res);
})
.catch(() => {
res.status(500).send("Unexpected error occurred");
});
});
api.get("/original/:key", async (req, res) => {
const key = req.params.key;
const fileStream = getFileStream(key);
fileStream.pipe(res);
});
api.post("/upload", upload.single("image"), async (req, res) => {
const file = req.file;
const result = await uploadFile(file);
await unLinkFile(file.path);
res.send({ imagePath: `/images/${result.Key}` });
});
module.exports = api;