인프런 커뮤니티 질문&답변
multer시 file.path 관련
해결된 질문
작성
·
761
1
multer를 이용한 uploads 폴더에 이미지 업로드시
file 로그를 찍어보면 아래와 같이 path에서 \\ 두번 찍힙니다
postman으로 확인해도 마찬가지고요
filename과 destination은 정상인데 어디서 두번 찍히게 되는지 모르겠네요.
아래는 로그로 찍어본 file과 server.js 전체 코드입니다
근데 또 file.path로 찍어보면 uploads\join.jpg 로 찍혀서 해당 폴더에 이미지는 올라가고 있어요
{
fieldname: 'image',
originalname: 'join.jpg',
encoding: '7bit',
mimetype: 'image/jpeg',
destination: 'uploads/',
filename: 'join.jpg',
path: 'uploads\\join.jpg',
size: 88818
}
const express = require("express");
const cors = require("cors");
const app = express();
const port = 8080;
const models = require("./models");
const multer = require("multer");
const upload = multer({
storage: multer.diskStorage({
destination: function (req, file, cb) {
cb(null, "uploads/");
},
filename: function (req, file, cb) {
cb(null, file.originalname);
},
}),
});
app.use(express.json());
app.use(cors());
app.use("/uploads", express.static("uploads"));
app.get("/products", (req, res) => {
models.Product.findAll({
//limit : 1,
order: [["createdAt", "DESC"]],
attributes: ["id", "name", "price", "createdAt", "seller", "imageUrl"],
})
.then((result) => {
console.log("products : ", result);
res.send({
products: result,
});
})
.catch((error) => {
console.log("error : ", error);
res.send("에러발생");
});
});
app.post("/image", upload.single("image"), (req, res) => {
const file = req.file; //저장된 이미지 정보 get
console.log("file : ", file);
console.log("file path====", file.path);
res.send({
imageUrl: file.path,
});
});
app.post("/products", (req, res) => {
const body = req.body;
const { name, description, price, seller } = body;
if (!name || !description || !price || !seller) {
res.send("모든 필드를 입력해주세요.");
}
models.Product.create({
name,
description,
price,
seller,
})
.then((result) => {
console.log("상품 생성 결과 : ", result);
res.send({
result,
});
})
.catch((error) => {
console.error(error);
res.send("상품 업로드에 문제가 발생");
});
res.send({
body,
});
});
app.get("/products/:id", (req, res) => {
const params = req.params;
const { id } = params;
models.Product.findOne({
where: {
id: id,
},
})
.then((result) => {
console.log("product : ", result);
res.send({
product: result,
});
})
.catch((error) => {
console.log(error);
res.send("상품 조회에 에러가 발생했습니다.");
});
});
app.listen(port, () => {
console.log("그랩에 쇼핑몰 서버가 돌아가고 있습니다.");
models.sequelize
.sync()
.then(() => {
console.log("db 연결 성공");
})
.catch((err) => {
console.log(err);
console.log("db 연결 에러");
process.exit();
});
});
답변 1
1
그랩
지식공유자
multer 상에서 결과를 표현할 때 저렇게 보여주는 것 같습니다!
실제로 윈도우에서는 경로를 표현할 때 backslash(\) 나 double backslash(\\) 모두 동일한 결과를 내므로 걱정할 필요는 없을 것 같습니다 :)
https://stackoverflow.com/questions/15969608/what-is-the-difference-between-and-in-file-path





감사합니다^^!