NodeJS 大家好,我得到一个错误时,试图存储一个图像从一个html表单中使用multer在express js

nuypyhwy  于 2023-01-08  发布在  Node.js
关注(0)|答案(1)|浏览(112)

我正在一个小应用程序,我想在其中存储从类型文件的输入字段中获得的图像,我按照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”“

qpgpyjmq

qpgpyjmq1#

嗯,我得到了别人的帮助,我能够解决这个问题。
以上结构的代码应该可以在MAC上工作,但是在Windows上有一个函数需要添加到文件名定义中

const storage = multer.diskStorage({
    destination: (req, file, cb) => {
        cb(null, path.join(__dirname, './images/'));
    },
    filename: (req, file, cb) => {
        cb(null, new Date().toISOString().replace(/:/g, '-') + '-' + file.originalname);
    }
});

toISOString()之后,应添加替换函数

相关问题