import multer from "multer";
import path from "path";
const fileStorage = multer.diskStorage\\({
// 저장 폴더 위치
destination: (req, file, cb) => {
cb(null, "upload/");
},
//파일이름
filename: (req, file, cb) => {
cb(null, file.originalname);
},
});
export const multerUpload = multer({
storage: fileStorage,
limits: {
fileSize: 20 * 1024 * 1024, // 20MB 로 제한
},
});
export default multerUpload;
폴더가 미리 생성되어 있지 않으면 저장이 되지 않고 500 오류가 발생한다.
이런 불상사를 막기위해 fs 모듈을 이용하여 폴더를 생성하는 코드를 작성해 놓으면 편하다.
import multer from "multer";
import path from "path";
import fs from "fs";
try {
fs.readdirSync("upload");
} catch (err) {
console.error("upload 폴더가 없습니다. 폴더를 생성합니다.");
fs.mkdirSync("upload");
}
const fileStorage = multer.diskStorage({
// 저장 폴더 위치
destination: (req, file, cb) => {
cb(null, "upload/");
},
//파일이름
filename: (req, file, cb) => {
cb(null, file.originalname);
},
});
export const multerUpload = multer({
storage: fileStorage,
limits: {
fileSize: 20 * 1024 * 1024, // 20MB 로 제한
},
});
export default multerUpload;
router.post("/video", multerUpload.single("file"), async (req, res, next) => {
console.log(req.body);
console.log(req.file);
}
const videoFetch = async () => {
// 영상 데이터 가져오기
const videoData = document.getElementById("inputVideo").files[0];
setVideoFile(videoData.name);
// formData 객체에 append
const formData = new FormData();
formData.append("file", videoData);
}
Content-Typy : multipart/form-data; boundary=----WebKitFormBoundarytgngAeRWcdblG9zH
const videoFetch = async () => {
// 영상 데이터 가져오기
const videoData = document.getElementById("inputVideo").files[0];
setVideoFile(videoData.name);
// formData 객체에 append
const formData = new FormData();
formData.append("file", videoData);
// 비디오 저장 fetch
const videoRes = await fetch(`http://localhost:5050/mypage/video`, {
method: "POST",
headers: {
// "Content-Type": "application/x-www-form-urlencoded",
},
body: formData,
});
}