-
카테고리
-
세부 분야
풀스택
-
해결 여부
해결됨
multer시 file.path 관련
22.03.02 14:39 작성 조회수 574
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