我正在一个小应用程序,我想在其中存储从类型文件的输入字段中获得的图像,我按照Multer文档上的指南,但当我尝试提交我的表单时,我得到这个错误错误:ENOENT:没有这样的文件或目录。
根据代码,应该从根目录中选取图像并将其存储在我的/images文件夹中
我的App.js文件
const multer = require('multer');
const fileStorage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, path.join(__dirname, 'images'));
},
filename: (req, file, cb) => {
cb(null, new Date().toISOString() + '-' + file.originalname);
}
});
app.use(multer({storage: fileStorage}).single('image'));
我的ejs视图
<form class="product-form" action="/admin/add-product" method="POST" enctype="multipart/form-data">
<div class="form-control">
<label for="image">Image</label>
<input
type="file"
name="image"
id="image"
>
</div>
<button class="btn" type="submit">Upload</button>
</form>
我的软件包. js
{
"name": "full-recap",
"version": "1.0.0",
"description": "recap",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "nodemon app.js"
},
"author": "",
"license": "ISC",
"devDependencies": {
"nodemon": "^2.0.20"
},
"dependencies": {
"@sendgrid/mail": "^7.7.0",
"bcryptjs": "^2.4.3",
"body-parser": "^1.20.1",
"connect-flash": "^0.1.1",
"connect-mongodb-session": "^3.1.1",
"csurf": "^1.11.0",
"dotenv": "^16.0.3",
"ejs": "^3.1.8",
"express": "^4.18.2",
"express-handlebars": "^6.0.6",
"express-session": "^1.17.3",
"express-validator": "^6.14.2",
"mongodb": "^4.12.1",
"mongoose": "^6.8.0",
"multer": "^1.4.5-lts.1"
}
}
我得到的完整错误是“错误:错误:没有此类文件或目录,请打开“C:\Users\Dunia Dunia\Desktop\Coding my career\Nodejs\完整概述\images\2023-01- 05 T22:58:24. 937 Z-firstpic. jpg”“
1条答案
按热度按时间qpgpyjmq1#
嗯,我得到了别人的帮助,我能够解决这个问题。
以上结构的代码应该可以在MAC上工作,但是在Windows上有一个函数需要添加到文件名定义中
在
toISOString()
之后,应添加替换函数