如何使用 Multer 提交带有可选文件提交的表单?
How to submit form with Multer with optional file submission?
我正在使用 multer 在我的 Express 应用程序中提交表单。问题是表单有可选的图像提交选项。这意味着如果 s/he 需要,用户可以添加照片,但 s/he 也可以提交没有图像的表单。图片提交没有问题。但是multer在没有图片的情况下是不提交表单的,其他字段也不提交。
const express = require('express');
const router = express.Router();
const Company = require('../controller/CompanyController');
const multer = require('multer');
const path = require('path');
let storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './public/images/logos');
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname));
}
});
let upload = multer({ storage: storage }).any();
router.route('/companies').post(upload, Company.Create);
module.exports = router;
一种解决方法是在提交通过后检查 req.file
的值。如果您未在表单中提供文件,req.file
的值应为 undefined
。但是,如果您提交文件,它应该是 object
。因此,您可以像这样编写一个简单的 if
语句:
function Create() {
if (req.file !== undefined) {
// process image here
}
// process all other fields
}
希望对您有所帮助!
我正在使用 multer 在我的 Express 应用程序中提交表单。问题是表单有可选的图像提交选项。这意味着如果 s/he 需要,用户可以添加照片,但 s/he 也可以提交没有图像的表单。图片提交没有问题。但是multer在没有图片的情况下是不提交表单的,其他字段也不提交。
const express = require('express');
const router = express.Router();
const Company = require('../controller/CompanyController');
const multer = require('multer');
const path = require('path');
let storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './public/images/logos');
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname));
}
});
let upload = multer({ storage: storage }).any();
router.route('/companies').post(upload, Company.Create);
module.exports = router;
一种解决方法是在提交通过后检查 req.file
的值。如果您未在表单中提供文件,req.file
的值应为 undefined
。但是,如果您提交文件,它应该是 object
。因此,您可以像这样编写一个简单的 if
语句:
function Create() {
if (req.file !== undefined) {
// process image here
}
// process all other fields
}
希望对您有所帮助!