Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- node red 기초
- 파일타입
- Redis 설치
- docker telegraf 설치
- jsreport 기초
- pubsub
- nodered
- node red http
- 노드레드
- nodejs 안정화버전
- nodejs update
- jsreport
- node-red 기초
- nodejs version
- 리눅스
- telegraf 설치
- javascript formdata
- javascript파일깨짐
- redis
- Node-RED
- 리눅스 node-red설치
- 도커 telegraf 설치
- node red
- 우분투
- postgres
- nodejs 버전 업그레이드
- node.js
- nodejs upgrade
- 파일속성
- InFluX
Archives
- Today
- Total
♥일홍이 개발♥
[node.js] multer 이미지 저장, 경로생성, 파일명 변경 본문
반응형
multer는 미들웨어!
1. multer 설치
npm install multer
2. server.js
const multer = require("multer"); //multer
var fs = require("fs"); //폴더 생성할때
3. multer 이용해서 이미지 업로드 및 경로,파일명 설정
upload.array("images")
이 부분에서 array하면 여러장 ->files 로 들어옴
single하면 한장 ->file 로 들어옴
//storage
const fileStorageEngine = multer.diskStorage({
destination: (req, file, cb) => {
if (file.fieldname == "images") { //fieldname 으로 각 페이지마다 올라오는 이미지 처리
let id = req.body.id;
let prj_code = req.body.prj_code;
var dir =
"C:/Users/pc/Desktop/사진 폴더/" + id + "/" + prj_code + "/"; //local
//폴더없으면 폴더 생성
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir, { recursive: true });
}
cb(null, dir);
} else {
cb(null, "C:/Users/pc/Desktop/사진 폴더/" + file.fieldname); //local
}
},
filename: function (req, file, cb) {
if (file.fieldname == "images") {
cb(null, file.originalname);
} else {
let id = JSON.parse(req.body.inputData).id;
let locat = JSON.parse(req.body.inputData).locat;
let idx = JSON.parse(req.body.inputData).idx;
let code = JSON.parse(req.body.inputData).code;
// let index = 0;
// index++;
// let typeArray = file.mimetype.split("/");
// let fileType = typeArray[1]; //확장자명 가지고오기
// cb(null, file.originalname);
cb(
null,
facil_name +
"_" +
id +
"_" +
locat +
"_" +
idx +
"_" +
file.originalname
);
}
},
});
//제한
const limits = {
fieldNameSize: 200, //필드명 사이즈 최대값
filedSize: 1024 * 1024, // 필드 사이즈 값 설정 (기본값 1MB)
fields: 2, // 파일 형식이 아닌 필드의 최대 개수 (기본 값 무제한)
fileSize: 16777216, //multipart 형식 폼에서 최대 파일 사이즈(bytes) "16MB 설정" (기본 값 무제한)
files: 10, //multipart 형식 폼에서 파일 필드 최대 개수 (기본 값 무제한)
};
//확장자 필터
const fileFilter = (req, file, callback) => {
const typeArray = file.mimetype.split("/");
const fileType = typeArray[1];
if (fileType == "jpg" || fileType == "jpeg" || fileType == "png") {
callback(null, true);
} else {
return callback(null, false);
}
};
const upload = multer({
storage: fileStorageEngine, //이미지 업로드
limits: limits, //업로드 제한
fileFilter: fileFilter, //파일 제한
});
app.post(routes.uploadFile, upload.array("images"), Facilitys_ManagementRouter);
+ 추가 react단에서 간단하게
formData + 다른 InputData (추가 데이터 날리기)
if (fileList2.length) {
const formData = new FormData();
formData.append("inputData", JSON.stringify(inputData)); //inputData 에 다른데이터 담아서
fileList2?.forEach((file) => {
formData.append("image", file); //필드명 백단과 맞춰야함
});
await axios
.post("http://host:port/api/FileImg", formData) //api 설정 후 formData 보내기
.then((res) => {
if (res.status === 200) {
const resultData = res.data;
} else if (res.status !== 200) {
return message.error("등록 실패! 관리자에게 문의해주세요!");
}
})
.catch((err) => console.error(err));
}
파일 날리고 받는건 쉬운데 경로 설정이랑 이름 설정하는데에서 시간 다 날림

반응형
'Javascript > node.js' 카테고리의 다른 글
[node.js] Node.js 버전 업그레이드 (1) | 2024.01.22 |
---|---|
[node.js] fileType 정리 (0) | 2022.12.28 |
[node.js] 파일 경로 directory 생성 (0) | 2022.05.26 |
Comments