gpt4 book ai didi

javascript - Multer req.file.path 未定义

转载 作者:太空宇宙 更新时间:2023-11-04 01:53:43 25 4
gpt4 key购买 nike

很抱歉问这个简单的问题。我刚刚接触node.js,并尝试使用express 制作RESTapi。对于文件上传,我使用 npm 中的 multer。一切都工作正常。但是当我尝试使用 req.file.path 在 post 方法中访问 multer 属性时,它会抛出以下消息:

{
"error": {
"message": "Cannot read property 'path' of undefined"
}
}

我还尝试获取 multer 中可用的其他属性,例如“mimetype”,但同样的错误只是属性名称发生了更改。我正在使用 postman 发送数据。这是我的代码片段。

product.js

import express from 'express';
import mongoose from 'mongoose';
import Product from '../models/product.model';
import multer from 'multer';

const router = express.Router();

const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, './uploads');
},
filename: (req, file, cb) => {
cb(null, `${new Date().toISOString().replace(/:/g, '-')}${file.originalname}`);
}
});

const fileFilter = (req, file, cb) => {
// reject a file
if(file.mimetype === 'image/jpeg' || file.mimetype === 'image/png') {
cb(null, false);
} else {
cb(new Error('Only .jpeg or .png files are accepted'), true);
}
};

const upload = multer({
storage: storage,
limits: {
fileSize: 1024 * 1024 * 5
},
fileFilter: fileFilter
});

router.post('/', upload.single('productImage'), (req, res, next) => {
const product = new Product({
_id: new mongoose.Types.ObjectId(),
name: req.body.name,
price: req.body.price,
productImage: req.file.path
});
product.save().then(result => {
console.log(result);
res.status(201).json({
message: 'Created product successfully',
createdProduct: {
name: result.name,
price: result.price,
_id: result._id,
request: {
type: 'GET',
url: `http://localhost:3000/products/${result._id}`
}
}
});
}).catch(err => {
console.log(err);
res.status(500).json({
error: err
});
});
});

product.model.ts

import mongoose from 'mongoose';

const productSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
name: {type: String, required: true},
price: {type: Number, required: true},
productImage: { type: String, required: true }
});

module.exports = mongoose.model('Product', productSchema);

我找不到解决方案。我已经从 stackoverflow 检查了几个解决方案,但没有找到任何解决方案。

最佳答案

如果您使用 postman ,请确保在标题和正文中选择“Content-Type”“multipart/form-data”,并确保选择表单数据,键是“productImage”,类型是文件,然后值是您要上传的文件

关于javascript - Multer req.file.path 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48730511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com