flutter

flutter에서 nodejs 서버로 이미지 업로드하기 - 서버부분

햎피 2022. 8. 24. 23:56
반응형

flutter에서 여러개의 이미지를 nodejs 서버로 업로드하기위해서는 multer를 사용해야한다!

 

multer를 먼저 설정해줘야한다.

destination을 이용해서 업로드할 이미지가 들어갈 폴더 이름을 바꿀 수 있다.

filename을 이용해서 업로드할 파일 이름을 바꿀 수 있다.

 

const upload = multer({
    storage: multer.diskStorage({
        destination: (req, file, cb) => {
            let keynum = req.params.keynum;
            let dir = 'uploads/' + keynum;
            if (!fs.existsSync(dir)) { fs.mkdirSync(dir) };
            cb(null, dir);
        },
        filename: (req, file, cb) => {
            if (file.fieldname === "location_images") {
                cb(null, '위치' + Date.now() + path.extname(file.originalname));
            }
        }
    }),
    limits: { fileSize: 5 * 1024 * 1024 }
})

 

이미지 파일들을 받는 부분이다.

flutter에서 form-data 형식으로 받아왔다.

const fileUpload = upload.fields([
    { name: 'location_images' },
]);
app.post('/api/uploadImg/:keynum', fileUpload, function (req, res) {
    var dir = 'uploads/' + req.params.keynum;
    if (!fs.existsSync(dir)) { fs.mkdirSync(dir) };
    var upload_date = req.body.upload_date;

    attractionModel.find({ key: req.params.keynum }, (err, att) => {
        var id = att[0]._id;
        attractionModel.findByIdAndUpdate(id, {
            $set: {
                upload_date: upload_date
            }
        }).exec();
    });

    res.status(200).json({ 'uploaded_images_count': count });
});
반응형