am using "react-native-image-picker": "^3.2.1", to get images from the library am getting it, but am not able to upload it to nodejs server using multer although I can upload an image from postman it means it should work fine here is my react native code
this.setState({ uri: response.uri });
const bodyToBe = new FormData({ maxDataSize: 20971520 });
bodyToBe.append('photo', {
type: response.type,
uri: response.uri,
name: response.fileName
})
fetch('http://192.168.10.6:5000/api/open/upload-any-image', {
headers: {
Authorization: `Bearer ${this.props.user.userToken}`,
'Accept': 'multipart/form-data',
'Content-Type': 'multipart/form-data',
},
method: 'POST',
body: bodyToBe
})
.then(response => {
console.log(response, "this is response");
response.json().then(res => console.log(res, "its is")).catch(err => console.log(err, "here you go"));
})
.catch(e => {
console.log(e.toString(), "error")
});
and server-side multer config is
'use strict;
const multer = require('multer');
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './uploads');
},
filename: function (req, file, cb) {
cb(null, Date.now() + file.originalname);
}
});
const fileFilter = (req, file, cb) => {
// reject a file
if (file.mimetype === 'image/jpeg' || file.mimetype === 'image/png') {
return cb(null, true);
} else {
return cb(null, false);
}
};
const upload = multer({
storage: storage,
limits: {
fileSize: 1024 * 1024 * 25
},
fileFilter: fileFilter
});
module.exports = upload;
and the express route is
console.log("request =>" ,req.files)
return openService
.uploadImage(req.body, req.files, req.user)
.then((data) => {
res.send(RS.successMessage(data))
})
.catch((err) => next(err));
});
Thanks in advance for helping.