Closed ertemishakk closed 3 years ago
{ [0] fieldname: 'image', [0] originalname: '00Q0Q_8bLxO6vGJ6_600x450.jpg', [0] encoding: '7bit', [0] mimetype: 'image/jpeg', [0] size: 23128, [0] bucket: 'lodos', [0] key: '1582459801328', [0] acl: 'public-read', [0] contentType: 'application/octet-stream', [0] contentDisposition: null, [0] storageClass: 'STANDARD', [0] serverSideEncryption: null, [0] metadata: { fieldName: 'image' }, [0] location: 'https://lodos.s3.ap-southeast-2.amazonaws.com/1582459801328', [0] etag: '"c145b4ea1a0e8be4f581ae56268c7f24"', [0] versionId: undefined [0] }, [0] { [0] fieldname: 'image', [0] originalname: '00202_bT8adcHePtb_600x450.jpg', [0] encoding: '7bit', [0] mimetype: 'image/jpeg', [0] size: 35577, [0] bucket: 'lodos', [0] key: '1582459801328', [0] acl: 'public-read', [0] contentType: 'application/octet-stream', [0] contentDisposition: null, [0] storageClass: 'STANDARD', [0] serverSideEncryption: null, [0] metadata: { fieldName: 'image' }, [0] location: 'https://lodos.s3.ap-southeast-2.amazonaws.com/1582459801328', [0] etag: '"9300a33dcf76feb972e7b732953ac3e0"', [0] versionId: undefined [0] }, backend route: router.post('/forsale', (req, res) => { const multiple = upload.array('image', 6) multiple(req, res, function (err) { const { errors, isValid } = validateForSalePosts(req.body) const fileArray = req.files; if (err) { errors.image = 'File Upload Error' return res.status(400).json(errors) } if (!isValid) { for (let i = 0; i < fileArray.length; i++) { s3.deleteObjects({ Bucket: 'lodos', Delete: { Objects: [{ Key: fileArray[i].key }] } }, function (err, data) { if (err) console.log(err); else console.log(data); }) } return res.status(400).json(errors) } const newForSalePost = new ForSalePosts({ title: req.body.title, description: req.body.description, name: req.body.postedby, price: req.body.price, make: req.body.make, model: req.body.model, language: req.body.language, condition: req.body.condition, email: req.body.email, phonenumber: req.body.phonenumber, town: req.body.town, city: req.body.city, state: req.body.state, user: req.body.userid, category: req.body.category, odometer: req.body.odometer, subcategory: req.body.subcategory }) if (fileArray.length !== 0) { const listoflinks = []; for (let i = 0; i < fileArray.length; i++) { const link = fileArray[i].location listoflinks.push(link) } for (var i = 0; i < listoflinks.length; i++) { newForSalePost.links.push(listoflinks[i]) } } newForSalePost.save().then(post => { AllPosts.updateOne({ user: post.user }, { $push: { posts: { postid: post._id, title: post.title, category: post.category, subcategory: post.subcategory, } } }, (err) => res.json(post)) }).catch(err => console.log(err)) }) }) aws.config.update({ secretAccessKey: keys.secretAccessKey, accessKeyId: keys.accessKeyId, region: 'ap-southeast-2' }) const s3 = new aws.S3(); const fileFilter = (req, file, cb) => { if (file.mimetype === 'image/png' || file.mimetype === 'image/jpeg' || file.mimetype === 'image/gif') { cb(null, true) } else { cb(new Error('Invalid Type'), false) } } const size = (req, file, cb) => { if (file.size < 5000000) { cb(null, true) } else { cb(new Error('Max File Size 5 MB'), false) } } const upload = multer({ fileFilter: fileFilter, size: size, storage: multerS3({ s3: s3, bucket: 'lodos', acl: 'public-read', metadata: function (req, file, cb) { cb(null, { fieldName: file.fieldname }) }, key: function (req, file, cb) { cb(null, Date.now().toString()) } }) }) frontend catching : data.append('image', this.state.selectedFile);
I believe that this is fixed in the latest version. Happy to reopen if it isn't...