Multer diskStorage destination errors on production environment
- Dominant language
- JavaScript
- Stars
- 12.1k
- Forks
- 1.1k
- Avg merge
- 8d 2h
- Merged PRs (30d)
- 21
Description
Hello,
On development environment code below works properly but on production nothing works.When I opened logs there are this error: Error OccuredError: ENOENT: no such file or directory, open 'public/images/8c3f666974_kiwi.png'.2 days I am trying to resolve it but... no result I try many things read many articles but nothing ... What is the problem?I read all multer documentation and I think I am implementing it properly?
This is code:
```js
const express = require("express");
const router = express.Router();
const multer = require('multer');
const db = require("../connection/databaseConn");
const Product = require("../models/Product");
const encryption = require("../encryption/encryption");
const path = require('path')
let storage;
let upload;
router.get("/upload",(req,res)=>{
res.render("upload");
});
let imagesNames = [];
new Promise((resolve, reject)=>{
resolve(
storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null,"public/images/")
},
filename: function (req, file, cb) {
let imageId = encryption.generateId();
let imageNameWithId = imageId.substr(0,10);
imagesNames.push({name:imageNameWithId,id:imageId});
let fileName = "" + imageNameWithId + "_" + file.originalname;
cb(null, fileName)
}
}))
}).then((storage)=>{
upload = multer({storage:storage}).any();
})
router.post('/upload', function(req, res) {
upload(req, res, function(err) {
if(err) {
console.log('Error Occured' + err);
return;
}
let files = req.files;
Product.findById(req.session.productId).then((p)=>{
for(let i = 0; i < files.length;i++){
p.images.push({imageId:imagesNames[i].id,imageName :"/static/images/" + imagesNames[i].name + "_" + files[i].originalname});
}
p.save();
}).then(()=>{
req.session.addMessage = "Product created!";
res.redirect("/categoriesLoad");
});
})
});
module.exports = router;
```
Contributor guide
Assessment
This issue has not been assessed yet.