peach
428
2019-06-19 09:28:11
1
119

node.js multer 클라이언트(뷰)단


multer로 글 추가할 때 사진을 로컬에 파일 업로드하는 것까지 되었습니다. 이렇게 업로드된 파일을 상세보기 뷰단에 나타나게 하고 싶습니다. 어떻게 해야 하나요?

routers

const pictureUpload = multer({ storage: "uploads/picture/" });
const upload = multer({
  storage: multer.diskStorage({
    destination: (req, file, cb) => cb(null, "uploads/picture/"),
    filename: (req, file, cb) =>
      cb(null, new Date().valueOf() + path.extname(file.originalname))
  })
});

boardRouter.post(
  routers.boardCreate,
  upload.single("pictureFile"),
  postBoardCreate
);

controller

export const postBoardCreate = (req, res) => {
  try {
    let sql =
      "insert into board(folder,title,content, nicName,writeDate,views,comments) values(?,?,?,1,now(),0,0)";
    dbConnection.query(
      sql,
      [req.body.folder, req.body.title, req.body.content],
      (err, result) => {
        if (err) {
          console.log(err);
        } else {
          const {
            body: { folder, title, content },
            file
          } = req;
          res.redirect(`/board${routers.boardDetail(result.insertId)}`);
        }
      }
    );
  } catch (err) {
    console.log(err);
  }
};

//boardDetail

export const boardDetail = (req, res) => {
  try {
    let sql =
      "select id, folder, title, content, nicName, date_format(writeDate, '%Y/%m/%d %T') as writeDate, views, comments from board where id=?";
    dbConnection.query(sql, [req.params.id], (err, result) => {
      if (err) {
        console.log(err);
      } else {
        res.render("boardDetail", {
          routers,
          result
        });
      }
    });
  } catch (err) {
    console.log(err);
    res.render("boardDetail", {
      routers,
      result: []
    });
  }
};


0
0
  • 답변 1

  • UnknownDontknow
    374
    2019-06-19 14:15:43

    업로드된 파일 경로를 mysql 게시물 테이블에 저장하셔서 디테일 페이지 그려줄때 같이 쿼리로 select 해오신후 img태그에 src로 경로값이 담긴 변수를 넣어주시면 될듯해요.

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.