如何使用multer上传文件/在表格数据中发帖?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用multer上传文件/在表格数据中发帖?相关的知识,希望对你有一定的参考价值。
这是productsModel.js文件
'use strict';
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var productsSchema = new Schema({
name: {
type: String,
required: true
},
cost: {
type: Number
},
product_imagePaths: [{
type: String
}]
});
module.exports = mongoose.model('Products', productsSchema);
这是我的productsController.js的代码
var mongoose = require('mongoose'),
Products = mongoose.model('Products');
exports.uploadProducts = function(req,res) {
var new_product = new Products(req.body)
new_product.save(function(err,product){
if(err) {
res.send(err);
}
res.status = 200;
res.json({
"status":"success"
});
});
};
productsRoutes.js
'use strict';
module.exports = function (app) {
var productsController = require('../controllers/productsController');
app.route('/products')
.get(productsController.fetchAllProducts)
.post(productsController.uploadProducts);
};
在我的server.js中
// mongoose instance connection url connection
mongoose.Promise = global.Promise;
var db = mongoose.connect('mongodb://localhost/abcd', {
useMongoClient: true
});
// body parser middleware
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true }));
// route
var userRoutes = require('./api/routes/userRoutes');
var aboutUsRoutes = require('./api/routes/aboutusRoutes');
var productsRoutes = require('./api/routes/productsRoutes');
userRoutes(app);
aboutUsRoutes(app);
productsRoutes(app);
现在这在我使用x-www-form-urlencoded
时有效。但是因为我想通过Post
方法(productsController.js中的uploadProducts)上传文件,所以只能通过form-data
来完成。但是,它不适用于form-data
。我读到multer
可用于form-data
上传,但我对如何在以下方法中使用它毫无头绪。
答案
在调用multer
函数之前,您想使用uploadProducts
作为中间件。
以下是productRoutes.js
的示例设置
'use strict';
const multer = require('multer')
const storage = multer.memoryStorage()
const upload = multer({
storage: storage,
limits: {
fileSize: 5000000,
files: 1
}
})
module.exports = function (app) {
var productsController = require('../controllers/productsController');
app.route('/products')
.get(productsController.fetchAllProducts)
.post(upload.single('img'), productsController.uploadProducts);
};
这将创建你的图像的Buffer
,你可以用productsController.js
在你的req.file.buffer
访问。
请注意,upload.single
是multer
的内置函数。阅读更多关于其他功能here。 img
也需要匹配输入字段的名称,即<input type="file" name="img">
这只是众多方法中的一种。希望能帮助到你!
以上是关于如何使用multer上传文件/在表格数据中发帖?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 javascript fetch api 和 express multer 上传图像
如何使用 Multer 在 MERN Stack 应用程序中上传图像文件