I am using express.js and multi lib to create a file upload API.
client side
const request = axios.create({
baseURL: import.meta.env.VITE_API_URL as any,
timeout: 50000,
headers: {'Content-Type': 'application/json'},
});
const formData = new FormData();
formData.append("file", file.raw);
formData.append("upload", upload);
request({ url: `/data/create` , method: 'post', data: formData , headers: {'Content-Type': 'multipart/form-data'}})
.then(resp => {
}).catch(error => {
});
server side
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, path.join("./public/images")); // set the destination
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname));
}
});
export const singleUpload = multer({ storage: storage }).single("file");
router.route('/data/create')
.post( singleUpload, createFile )
export async function createFile( req: Request, res: Response){
let info = req.body;
const file = req.file;
console.log('output', info, file);
try{
return res.status(200).json({ 'data': 'data'});
}catch(err){
console.log(' createAsset err',err)
return res.status(500).json({ 'error': err});
}
}
output is req.body is
[Object: null prototype] {
upload: '[object Object]'
}
but req.body.upload can’t be parsed only show [object Object], can’t even work it out with JSON.parse(req.body.upload).
any ideas?