Repository navigation
Expand file tree
/
Copy pathindex.js
More file actions
79 lines (63 loc) · 2.03 KB
/
Copy pathindex.js
File metadata and controls
79 lines (63 loc) · 2.03 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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
const express = require("express")
const app = express()
var cookieParser = require("cookie-parser")
const jwt = require("jsonwebtoken")
const cors = require("cors")
const multer = require("multer")
const mime = require("mime-types")
const path = require("path")
require("dotenv").config()
const fs = require("fs")
const port = process.env.PORT
const bodyParser = require("body-parser")
app.use(
cors({
origin: "*",
})
)
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, "forest/")
},
filename: (req, file, cb) => {
const ext = path.extname(file.originalname)
cb(null, Date.now() + ext)
},
})
const upload = multer({ storage: storage })
app.post("/images", upload.single("image"), (req, res, next) => {
if (!req.file) {
// Handle case where no file was uploaded
return res.status(400).json({ error: "No file uploaded" })
}
const mimeType = mime.lookup(req.file.originalname)
if (!mimeType || !mimeType.startsWith("image/")) {
// Handle case where uploaded file is not an image
return res.status(400).json({ error: "File must be an image" })
}
const filePath = req.file.path
res.status(200).json({ success: true })
})
// Route for retrieving an image
app.get("/images/:filename", (req, res, next) => {
const filePath = path.join(__dirname, "uploads", req.params.filename)
// Return the image file
res.sendFile(filePath)
})
const jsonErrorHandler = async (err, req, res, next) => {
res.status(err.status).send(err)
}
app.use(jsonErrorHandler)
app.use(cookieParser())
app.use(bodyParser.json());
app.use((req, res, next) => {
req.user = req.cookies.user
next()
})
const files = fs.readdirSync("./routes/").filter((file) => file.endsWith(".js"))
for (const file of files) {
const route = require(`./routes/${file}`)
app.use(route.page, new route.Router())
console.log(`Route ${file.toLowerCase()} launched`)
}
app.listen(port, () => console.log("Server on: http://localhost:" + port))