-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
86 lines (74 loc) · 2.86 KB
/
index.js
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
80
81
82
83
84
85
86
//---------------------------- import --------------------------------//
import express from "express"
import postRouter from "./router/post.js"
import commentRouter from "./router/comment.js"
import userRouter from "./router/user.js"
import { connectDB } from "./database/database.js"
import { config } from "./config.js"
//import cors from "cors"
import helmet from "helmet"
import mypageRouter from "./router/mypage.js"
import cors from "cors"
import multer from "multer"
import path from "path"
import * as Files from "./data/file.js"
//---------------------------- middleware --------------------------------//
const __dirname = path.resolve()
const app = express()
app.use(cors())
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
app.use(express.static(path.join(__dirname + "/public")))
app.use(helmet())
app.use("/cotato", postRouter)
app.use("/comment", commentRouter)
app.use("/users", userRouter)
app.use("/mypage", mypageRouter)
//---------------------------- server listen --------------------------------//
const upload = multer({
storage: multer.diskStorage({
// 저장할 장소
destination(req, file, cb) {
cb(null, "public/uploads")
},
// 저장할 이미지의 파일명
filename(req, file, cb) {
const ext = path.extname(file.originalname) // 파일의 확장자
console.log("file.originalname", file.originalname)
// 파일명이 절대 겹치지 않도록 해줘야한다.
// 파일이름 + 현재시간밀리초 + 파일확장자명
cb(null, path.basename(file.originalname, ext) + Date.now() + ext)
},
}),
// limits: { fileSize: 5 * 1024 * 1024 } // 파일 크기 제한
})
app.post("/cotato/img", upload.single("img"), (req, res) => {
// 해당 라우터가 정상적으로 작동하면 public/uploads에 이미지가 업로드된다.
// 업로드된 이미지의 URL 경로를 프론트엔드로 반환한다.
console.log("전달받은 파일", req.file)
console.log("저장된 파일의 이름", req.file.filename)
// 파일이 저장된 경로를 클라이언트에게 반환해준다.
const IMG_URL = `http://localhost:8080/uploads/${req.file.filename}`
console.log(IMG_URL)
res.json({ url: IMG_URL })
})
app.post(
"/cotato/attachment",
upload.single("attachment"),
async (req, res) => {
// 해당 라우터가 정상적으로 작동하면 public/uploads에 파일 업로드
const data = req.file
console.log("전달받은 파일", data)
console.log("저장된 파일의 이름", data.filename)
Files.createNewInstance(data) // 파일 객체 생성
res.json({ attachmentName: data.filename, originalname: data.originalname })
// 프론트로 저장된 파일 이름, 원래 파일 이름 보내줌
}
)
connectDB()
.then(() => {
app.listen(config.port.port, () => {
console.log(`Server is running`)
})
})
.catch(console.error)