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 |