使用 multer 在节点 js 中上传文件时未定义[已关闭]

问题描述 投票:0回答:1

我无法在 mac 中使用 multer 节点包上传任何文件或图像。但同样的代码在 Windows 中运行良好。我正在使用邮递员进行 api 调用。当我点击 api 并在控制台日志中时,我的 req.file 未定义

const express = require('express');
        const app = express();
        const multer  = require('multer');
        const storage = multer.diskStorage({
           destination: function (req, file, cb) {
             cb(null, 'uploads')
           },
           filename: function (req, file, cb) {
              console.log(file)
           //   const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9)
             cb(null, file.originalname)
           }
         })
        const upload = multer({storage: storage})
        
        app.post('/post', upload.single('avatar'), (req,res)=>{
    console.log(req.file)
           if (!req.file) {
              return res.status(400).send([{ msg: "File is missing",err }])
            }
        else{
           return res.status(200).send([{ msg: "working", }])
        }
        });
        app.listen(3000,(err,succes)=>{
         if (err) {
            console.log(err)
         }else{
            console.log("Server is running in port number",3000)
         }
        });
node.js express multer
1个回答
0
投票

能否请您编写一个小型 Nodejs 客户端并进行测试。这是为了排除邮递员是否有特定的情况。

下面的代码是示例 Nodejs 客户端。

client.js //作为 node 客户端运行

const fs = require('fs');
const axios = require('axios');
const FormData = require('form-data');

const formdata = new FormData();

// adding the file
formdata.append('avatar', fs.createReadStream('./avatar.jpg'));

axios
  .post('http://localhost:3000/post', formdata)
  .then((data) => {
    console.log(data.data);
  })
  .catch((error) => {
    console.log(error);
  });
© www.soinside.com 2019 - 2024. All rights reserved.