提问者:小点点

获取奇怪的错误错误类型error:app.use()需要一个中间件函数


const upload = require('../middleware/upload')
const user = require('../models/user')

class Routes {
    constructor(app) {
        this.configureCors(app)
        app.use(upload)
        app.use('/fileupload', (req, res) => {
            res.send("test")
        })
    }
    configureCors(app) {
        app.use((req, res, next) => {
            res.setHeader('Access-Control-Allow-Origin', '*');
            res.setHeader('Access-Control-Allow-Methods', 'POST, PUT, DELETE, GET');
            res.setHeader('Cache-Control', 'no-cache');
            next();
        });
    }    
}

module.exports = Routes

upload.js

const path = require('path')
const multer = require('multer')

const storage = multer.diskStorage({
    destination : function(req, file, cb) {
        cb(null, 'uploads/')
    },
    filename : function(req, file, cb) {
        let extn = path.extname(file.originalName)
        cb(null, Date.now() + extn)
    }
})

const Upload = multer({
    storage : storage,
    fileFilter : function(req, file, callback) {
        if(
            file.mimetype == 'image/png' ||
            file.mimetype == 'image/jpg'
          ) {
              callback(null, true)
          } else {
              console.log("Only support jpg and png images")
              callback(null, false)
          }
    },
    limit : {
        fileSize : 1024 * 1024 * 2
    }
})

module.exports = Upload

我不知道错误在哪里错误类型错误:app.use()需要一个中间件函数大概video.js期望返回函数是那个错误吗? 请看一下并指导我这方面的工作。

我想让它单独的文件上传设置这个通过中间件

谢谢


共1个答案

匿名用户

您需要使用multer提供的选择器,如这里的文档所述。

要选择一个要上载的文件,请将代码更改为:

    //...
    constructor(app) {
        this.configureCors(app)
        app.use(upload.single('file'))   // <= changed line of code
        app.use('/fileupload', (req, res) => {
            res.send("test")
        })
    }
    //...