sugang
sugang'study
sugang
전체 방문자
오늘
어제
  • 분류 전체보기
    • [OS]
    • [취업정보]
    • [Server]
    • [Algorithm]
    • [Database]
    • [MyTravel]
    • [Network]

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • n

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
sugang

sugang'study

[Server]

[Node] 다중 파일 올리기

2022. 9. 23. 15:45

index.js 

const express = require("express");
const multer = require("multer");
const fs = require("fs");
const path = require("path");

const app = express();

app.set("port", process.env.PORT || 3000);
//'port'에 포트 설정
app.get("/", (req, res) => {
res.send("hello express");
});
//'/' 입력으로 들어오면, res.send('hello express') 송출

app.listen(app.get("port"), () => {
console.log(app.get("port"));
});
// listen: 포트를 연결하고 서버를 실행

//파일 저장하려면 uploads 폴더 필수. 없으면 생성
try {
fs.readdirSync("uploads");
} catch (error) {
fs.mkdirSync("uploads");
}

//저장 목적지는 uploads 폴더 아래로, 파일 명은 파일네임에 경로와 날짜 붙여서 업로드 파일로 생성
const upload = multer({
storage: multer.diskStorage({
destination(req, file, done) {
done(null, "uploads/"); //에러 null, 안 에러 시 uploads가 목적지
},
filename(req, file, done) {
const ext = path.extname(file.originalname);
done(null, path.basename(file.originalname, ext) + Date.now() + ext);
},
}),
});

//multipart.html 불러옴
app.get("/uploads", (req, res) => {
res.sendFile(path.join(__dirname, "multipart.html"));
});

// "/upload" 로 파일들 배열형식으로 묶어서 전송
app.post(
"/upload",
upload.fields([{ name: "image1" }, { name: "image2" }]), // 다중파일이므로 리스트 안에 키-값 형식으로 묶어서 전송
(req, res) => {
console.log(req.files, req.body);
res.send("ok");
}
);

app.get("/", (req, res, next) => {
console.log("get / 요청에서만 실행됩니다. ");
});

 

html

<form id="form" action="/upload" method="post" enctype="multipart/form-data">
<!-- 파일 선택 폼 -->
<input type="file" name="image1" />
<input type="file" name="image2" />
<input type="text" name="title" />
<button type="submit">업로드</button>
</form>

'[Server]' 카테고리의 다른 글

JavaScript  (0) 2023.07.05
[Server] ec2 vscode ssh : Operation timed out, Permission denied (PublicKey) 오류 해결  (0) 2023.04.13
스프링입문 - 데이터 조회하기 with JPA, 페이지 이동하기, 수정, 삭제  (0) 2022.09.08
[server] Docker 로 Node.JS & Nginx개발환경 구축  (0) 2022.07.03
[server] Docker 시작하기  (0) 2022.07.01
    '[Server]' 카테고리의 다른 글
    • JavaScript
    • [Server] ec2 vscode ssh : Operation timed out, Permission denied (PublicKey) 오류 해결
    • 스프링입문 - 데이터 조회하기 with JPA, 페이지 이동하기, 수정, 삭제
    • [server] Docker 로 Node.JS & Nginx개발환경 구축
    sugang
    sugang

    티스토리툴바