为什么不能在postman中发送表单数据

wdebmtf2  于 2022-11-07  发布在  Postman
关注(0)|答案(1)|浏览(250)

尝试以 Postman 和sequelize方式发送表单数据时返回错误:value cannot be null
但是当用json发送原始请求时,一切正常。尝试body-parser和multer,但是没有任何工作
这是我的索引.ts

import express from "express";
import fileUpload from "express-fileupload"
...

const app = express()
const PORT = process.env.PORT || 5100

app.use(cors())
app.use(express.json())
app.use('/api', router)
app.use(fileUpload({}))
app.use(errorHandler)

const start = async () => {
    try {
        await sequelize.authenticate()
        await sequelize.sync()
        console.log(chalk.cyanBright('Successful conection to data base'));
        app.listen(PORT, () => { console.log(chalk.cyanBright(`Server has been started on port ${PORT}`)) })

    }
    catch (e) {
        console.log(e);
    }
}

start()

这是我的控制器

export const DeviceController = {
    async create(req: Request, res: Response, next:nextType) {
        try {
            const { brandId, typeId, name, price } = req.body
            const img = req.files
            let filename = 'uuid.v4()' + '.jpg'
            img?.mv(path.resolve(__dirname, '..', 'static', filename))
            const device = await Models.Device.create({ brandId, typeId, name, price, img: filename })
            return res.json(device)
        } catch (error: any) {
            next(ApiError.badRequest(error.message))
            console.log(error);

        }
fdbelqdn

fdbelqdn1#

app.use(express.json())

您拥有用于JSON请求主体的主体解析中间件。
对于多部分/表单数据请求主体,你没有主体解析中间件。documentation for body-parser列出了几个你可以使用的中间件。
正在尝试主体解析器
...表示它不支持该格式
和多个
......似乎并不存在。你是说多方?还是说Multer?
我们不能告诉你你做错了什么没有看到你的尝试。
重新编辑:
你说:

const img = req.files
img?.mv(path.resolve(__dirname, '..', 'static', filename))

但文件上说:

console.log(req.files.foo); // the uploaded file object

files属性包含所有文件,这些文件按多部分请求中为它们指定的名称进行索引。
您尝试读取文件的 * 集合 *,就好像它是一个文件一样。

相关问题