Showing
6 changed files
with
21 additions
and
19 deletions
1 | /* eslint-disable no-console */ | 1 | /* eslint-disable no-console */ |
2 | +import routes from "../routes"; | ||
2 | import File from "../models/File"; | 3 | import File from "../models/File"; |
3 | 4 | ||
4 | export const home = async (req, res) => { | 5 | export const home = async (req, res) => { |
... | @@ -30,26 +31,24 @@ export const search = async (req, res) => { | ... | @@ -30,26 +31,24 @@ export const search = async (req, res) => { |
30 | // upload 또한 upload를 준비하기 위한 get 페이지와 실제 데이터를 보내는 post 페이지가 필요하다. | 31 | // upload 또한 upload를 준비하기 위한 get 페이지와 실제 데이터를 보내는 post 페이지가 필요하다. |
31 | export const getUpload = (req, res) => | 32 | export const getUpload = (req, res) => |
32 | res.render("upload", { pageTitle: "Upload" }); | 33 | res.render("upload", { pageTitle: "Upload" }); |
34 | + | ||
33 | export const postUpload = async (req, res) => { | 35 | export const postUpload = async (req, res) => { |
34 | // const {} 를 통해 body를 받아와 요청하는 정보들을 확인한다. | 36 | // const {} 를 통해 body를 받아와 요청하는 정보들을 확인한다. |
35 | // 이는 pug와 db.js를 확인해야하는 듯 하다. | 37 | // 이는 pug와 db.js를 확인해야하는 듯 하다. |
36 | const { | 38 | const { |
37 | - body: { title, description }, | 39 | + body: { title }, |
38 | file: { path }, // path로 할때는 로컬의 경로. S3는 location | 40 | file: { path }, // path로 할때는 로컬의 경로. S3는 location |
39 | } = req; // file에 path라는 요소가 있다. | 41 | } = req; // file에 path라는 요소가 있다. |
40 | 42 | ||
41 | - const newVideo = await Video.create({ | 43 | + const newFile = await File.create({ |
42 | fileUrl: path, | 44 | fileUrl: path, |
43 | title, | 45 | title, |
44 | - description, | 46 | + // 여기있는 fileUrl, title은 fileDB의 속성이다. |
45 | - creator: req.user.id, | ||
46 | - // 여기있는 fileUrl, title, description은 videoDB의 속성이다. | ||
47 | }); | 47 | }); |
48 | - // console.log(newVideo); | 48 | + |
49 | - req.user.videos.push(newVideo.id); // user DB의 video atribute에 추가 | 49 | + console.log(newFile); |
50 | - req.user.save(); | 50 | + res.redirect(routes.home); |
51 | - res.redirect(routes.videoDetail(newVideo.id)); // id는 DB의 id | 51 | + |
52 | - // id는 mongoDB가 랜덤하게 만들어준다. | ||
53 | }; | 52 | }; |
54 | 53 | ||
55 | export const fileDetail = async (req, res) => { | 54 | export const fileDetail = async (req, res) => { |
... | @@ -73,12 +72,12 @@ export const deleteFile = async (req, res) => { | ... | @@ -73,12 +72,12 @@ export const deleteFile = async (req, res) => { |
73 | params: { id }, | 72 | params: { id }, |
74 | } = req; | 73 | } = req; |
75 | try { | 74 | try { |
76 | - const video = await Video.findById(id); | 75 | + const file = await File.findById(id); |
77 | // video를 받아서 render로 통해 템플릿으로 던져준다, | 76 | // video를 받아서 render로 통해 템플릿으로 던져준다, |
78 | - if (String(video.creator) !== req.user.id) { | 77 | + if (String(file.creator) !== req.user.id) { |
79 | throw Error(); | 78 | throw Error(); |
80 | } else { | 79 | } else { |
81 | - await Video.findOneAndRemove({ _id: id }); | 80 | + await File.findOneAndRemove({ _id: id }); |
82 | } | 81 | } |
83 | } catch (error) { | 82 | } catch (error) { |
84 | console.log(error); | 83 | console.log(error); | ... | ... |
1 | +dotenv.config(); | ||
1 | import dotenv from "dotenv"; | 2 | import dotenv from "dotenv"; |
2 | import app from "./app"; // app.js에서 export default app했기 때문에 불러올 수 있다. | 3 | import app from "./app"; // app.js에서 export default app했기 때문에 불러올 수 있다. |
3 | import "./db"; | 4 | import "./db"; |
4 | import "./models/File"; | 5 | import "./models/File"; |
5 | 6 | ||
6 | -dotenv.config(); | ||
7 | const PORT = process.env.PORT || 80; | 7 | const PORT = process.env.PORT || 80; |
8 | 8 | ||
9 | const handleListening = () => { | 9 | const handleListening = () => { | ... | ... |
... | @@ -12,11 +12,13 @@ const s3 = new aws.S3({ | ... | @@ -12,11 +12,13 @@ const s3 = new aws.S3({ |
12 | region: "ap-northeast-2", | 12 | region: "ap-northeast-2", |
13 | }); | 13 | }); |
14 | 14 | ||
15 | +const multerFile = multer({ dest: "uploads/files/" }); | ||
16 | + | ||
15 | export const localsMiddleware = (req, res, next) => { | 17 | export const localsMiddleware = (req, res, next) => { |
16 | res.locals.siteName = "my Storage"; | 18 | res.locals.siteName = "my Storage"; |
17 | res.locals.routes = routes; | 19 | res.locals.routes = routes; |
18 | - // res.locals.loggedUser = req.user || null; | ||
19 | - // console.log(req); | ||
20 | next(); | 20 | next(); |
21 | }; | 21 | }; |
22 | 22 | ||
23 | +export const uploadFile = multerFile.single("file"); | ||
24 | +// single에 들어간 File은 upload.pug의 file 부분 input name | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -17,7 +17,7 @@ const FileSchema = new mongoose.Schema({ | ... | @@ -17,7 +17,7 @@ const FileSchema = new mongoose.Schema({ |
17 | }, | 17 | }, |
18 | }); | 18 | }); |
19 | // 이제 이 스키마를 이용하여 model을 만들어준다. | 19 | // 이제 이 스키마를 이용하여 model을 만들어준다. |
20 | -// 모델의 이름은 "Video" | 20 | +// 모델의 이름은 "File" |
21 | const model = mongoose.model("File", FileSchema); | 21 | const model = mongoose.model("File", FileSchema); |
22 | export default model; | 22 | export default model; |
23 | // 모델이 만들어짐을 알리기 위해 init.js에 import해준다. | 23 | // 모델이 만들어짐을 알리기 위해 init.js에 import해준다. | ... | ... |
... | @@ -6,11 +6,12 @@ import { | ... | @@ -6,11 +6,12 @@ import { |
6 | fileDetail, | 6 | fileDetail, |
7 | deleteFile, | 7 | deleteFile, |
8 | } from "../controllers/homeController"; | 8 | } from "../controllers/homeController"; |
9 | +import { uploadFile } from "../middlewares"; | ||
9 | const fileRouter = express.Router(); | 10 | const fileRouter = express.Router(); |
10 | 11 | ||
11 | // Upload | 12 | // Upload |
12 | fileRouter.get(routes.upload, getUpload); | 13 | fileRouter.get(routes.upload, getUpload); |
13 | -fileRouter.post(routes.upload, postUpload); | 14 | +fileRouter.post(routes.upload, uploadFile, postUpload); |
14 | 15 | ||
15 | // File Detail | 16 | // File Detail |
16 | fileRouter.get(routes.fileDetail(), fileDetail); | 17 | fileRouter.get(routes.fileDetail(), fileDetail); | ... | ... |
... | @@ -5,6 +5,6 @@ block content | ... | @@ -5,6 +5,6 @@ block content |
5 | form(action=`/files${routes.upload}`, method="post", enctype="multipart/form-data") | 5 | form(action=`/files${routes.upload}`, method="post", enctype="multipart/form-data") |
6 | div.fileUpload | 6 | div.fileUpload |
7 | label(for="file") File | 7 | label(for="file") File |
8 | - input(type="file", id="file", name="file", required=true, accept = "file/*") | 8 | + input(type="file", id="file", name="file", required=true) |
9 | input(type="text", placeholder="Title", name="title", required=true) | 9 | input(type="text", placeholder="Title", name="title", required=true) |
10 | input(type="submit", value="Upload File") | 10 | input(type="submit", value="Upload File") |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or login to post a comment