使用 node.js 上传图像文件

Image file upload with node.js

我正在尝试调整我的代码以上传文件,但我不明白,我在社区中查看但我不明白,我对此还是个新手。老是报错jsonreturn,你知道会是什么吗? 有逻辑的文件

async img(request, response){
    multer({
        storage: multer.diskStorage({
            destination: (req, file, cb) => {
                cb(null, "./Uploads")
        },
        filename: (req, file, cb) => {

            cb(null, Date.now().toString() + '-' + file.originalname)

        },
        fileFilter: (req, file, cb) => {
            const extensionImg = ['image/png', 'image/jpg', 'image/jpeg'].find
            (formatPermitted => formatPermitted == file.mimetype)

            if(extensionImg){
                return cb(null, true)
            }
                return cb(null, false)
            } 

       })

    }).single('image')

    if(request.file){
        return response.status(200).json({erro: false, message: "ok"});
    }else{
        return response.status(400).json({erro: true, message: "error"});
    }
} 

路径所在的文件

const IncidentsController = require('./controllers/IncidentsController');

const routes = express.Router();

routes.post('/uploads', IncidentsController.img)

multer(...).single(...) returns一个中间件函数。 returns 必须实际调用中间件函数才能执行某些操作。

通常,您会在请求处理程序之外定义中间件,然后将其用作一个或多个请求处理程序的中间件。

 const imgMulterMiddleware = multer({
    storage: multer.diskStorage({
        destination: (req, file, cb) => {
            cb(null, "./Uploads")
    },
    filename: (req, file, cb) => {

        cb(null, Date.now().toString() + '-' + file.originalname)

    },
    fileFilter: (req, file, cb) => {
        const extensionImg = ['image/png', 'image/jpg', 'image/jpeg'].find
        (formatPermitted => formatPermitted == file.mimetype)

        if(extensionImg){
            return cb(null, true)
        }
            return cb(null, false)
        } 

   })

}).single('image');

然后,根据需要使用该中间件:

routes.post('/uploads', imgMulterMiddleware, (req, res) => {
     // do something with req.file here which will be set
     // by the middleware if it was successful

    if (req.file) {
        res.json({erro: false, message: "ok"});
    } else {
        res.status(400).json({erro: true, message: "error"});
    }
});