在使用Multer的Express应用中,req.files始终为空

时间:2018-12-26 06:00:22

标签: node.js express multer

我正在使用multer作为express app的中间件来在服务器上上传文件,但是它似乎无法正常工作,我通过邮递员或curl发送的每个发帖请求中都有一个空文件数组。

我已经在发送请求时将标头设置为“内容类型”:'multipart/form-data'

app.js

lines:12-43

const app = express();
const fileStorage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, 'images/');
  },
  Skipfilename: (req, file, cb) => {
    cb(null, new Date().toISOString() + '-' + file.originalname);
  }
});

const fileFilter = (req, file, cb) => {
  if (
   file.mimetype === 'audio/mp3' ||
   file.mimetype === 'image/aug' ||
   file.mimetype === 'image/jpg'
   ) {
    cb(null, true);
  }else {
   cb(null, false);
  }
  };

 app.use(bodyParser.urlencoded()); // x-www-form-urlencoded <form>
 app.use(bodyParser.json()); // application/json

 app.use(
  multer({ storage: fileStorage, fileFilter: fileFilter }).any()
 );

 app.use('/images', express.static(path.join(__dirname, 'images')));

routes / admin.js

lines:5-12

const router = express.Router();
router.post('/upload',adminController.upload);
module.exports = router;

controllers / admin.js

exports.upload = (req, res, next) => {  
const files= req.files
console.log(req)
res.status(200).json({ files:files});
}

更新 邮递员请求的屏幕截图

Request headers

Request body

1 个答案:

答案 0 :(得分:0)

在我将mp3模仿类型更改为正确的音频/ mpeg模仿类型之后,它开始工作。但这不是一个紧凑的解决方案