풀스택 맛보기9-File Upload

  1. 파일 업로드
    1. Multer
    2. Middleware 생성
    3. 파일 소유자
      1. populate

파일 업로드

Multer

  • 파일 업로드에 사용되는 multipart/form-data를 처리하기 위한 node.js 미들웨어다.

🔧 npm install multer

Form을 Multipart-Form으로 만들어야한다.

src/views/edit-profile.pug

block content 
    form(method="POST" enctype="multipart/form-data")
        label(for="avatar") Avatar
        input(type="file" id="avatar" accept="image/*")
        input(name="nickname" placeholder="nickname" type="text" value=loggedInUser.nickname required)
        input(name="email" placeholder="email" type="email" value=loggedInUser.email required)
        input(type="submit" value="수정하기")

Middleware 생성

파일 소유자

id video에 저장하여…

populate

const postSchema = new mongoose.Schema({
  fileUrl: { type: String, required: true },
  title: { type: String, required: true, minLength: 1, maxLength: 30 },
  content: { type: String, required: true, minLength: 1, maxLength: 500 },
  createdAt: { type: Date, required: true, default: Date.now },
  hashtags: [{ type: String, trim: true }],
  meta: {
    views: { type: Number, default: 0, required: true },
    likes: { type: Number, default: 0, required: true },
  },
  owner: {
    type: mongoose.Schema.Types.ObjectId,
    required: true,
    ref: "User",
  },
});
  const { id } = req.params;
  const post = await Post.findById(id);
  const owner = await User.findById(post.owner);
if String(post.owner) === String(loggedInUser._id) 
    a(href=`${post.id}/edit`) 게시글 수정 →
    br
    a(href=`${post.id}/delete`) 게시글 삭제 →