React ile bi admin panel geliştiriyorum kendi projem için. API tarafında da Nodejs (express) var.
React tarafında axios ile formdata post atıyorum.
Şöyle bir formum var;
Örnek bir request JSON yapısı şöyle;
{
"kategoriId": 2,
"adi": "deneme",
"resim": "file_object",
"tarif": [
{
"tarif": "deneme tarif 1",
"resim": "file_object"
},
{
"tarif": "deneme tarif 2",
"resim": "file_object"
},
{
"tarif": "deneme tarif 3",
"resim": "file_object"
},
{
"tarif": "deneme tarif 4",
"resim": "file_object"
}
]
}file_object yazan yerlerim formdaki input file'dan aldığım resimler. Bunu request json'u formdata olarak düşünün.
axios ile istek atıp express tarafındaki multer ile yakalıyorum.
uploadHelper middleware:
import fs from 'fs';
import multer from 'multer';
import { Request } from 'express';
const storage = multer.diskStorage({
destination: function (req: Request, file: Express.Multer.File, cb: Function) {
if (!fs.existsSync(process.env.IMAGE_UPLOAD_PATH)) {
fs.mkdirSync(process.env.IMAGE_UPLOAD_PATH, { recursive: true });
}
cb(null, process.env.IMAGE_UPLOAD_PATH);
},
filename: (req, file, cb) => cb(null, file.originalname)
});
export default multer({ storage });endpointim de şöyle;
import { Router } from "express";
import uploadHelper from "../Helpers/uploadHelper";
import TarifService from "../Services/tarifService";
export default function (app: Router) {
app.post(
'/tarifler',
uploadHelper.single('resim'),
async (req, res) => res.send(await new TarifService(req).adminTarifEkle(req.body)),
);
}Bu şekilde yapınca tarif dizisi altındaki resimleri multer ile yakalayamıyor ve yükleyemiyorum. Yakalamanın bir çözümü yada farklı bir yol bilen/düşüncesi olan var mı acaba ?