无法使用multer上传文件

not able to upload file using multer

我已经看到很多关于这个的答案并尝试了几乎所有答案,但 none 似乎对我有用。我可以将表单数据打印为 ascii 字符,但我没有按预期看到存储在 public/uploads 文件夹中的文件。我可以使用 API 在 React 应用程序上读取和呈现存储的文件,但无法上传。我没有收到任何错误,一切正常,但文件夹中没有上传任何文件。我正在尝试使用 multer 上传文件,下面是代码片段:

routes/uploads.js

var storage = multer.diskStorage({
    dest : function (req, file, cb) {
        cb(null, path.join(__dirname, 'public/uploads/'))
    }
});

var upload = multer({storage:storage}) ;

router.post('/upload', upload.single('mypic'), function (req, res, next) {
    console.log("inside upload files");
    console.log(req.body); //prints non-readable characters as I am uploading image as expected               
    console.log(req.file); //says undefined
    return res.status(204).end();
});

API.js(反应方):

export const uploadFile = (payload) =>   //payload is actually formdata
  fetch(`${api}/files/upload`,
      {
        method: 'POST',
        //headers: { 'Content-Type': 'application/json' },                        
        headers: {              
          'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'
        },            
        body: payload
    }
)
.then(res => {
    console.log(res);
    return res.status;
})
.catch(error => {
        console.log(error);
        return error;
});

尝试删除:

'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'

尝试以下 IT 包含多个部分:

var storage = multer.diskStorage({
        destination: function (req, file, cb) {

            const extension = file.mimetype.split('/')[1];
           //you can change destination runtime
            if(file.fieldname == "covers[]")
            {
                cb(null, __dirname, '../public/uploads/cover');
                return;
            }
            else
            {
                cb(null, '../public/uploads/image');
                return;
            }

        },
        filename: function (req, file, cb) {
            //you can also change name

            cb(null, filename)
        }
    });

    var upload = multer({
        storage: storage,
    });