干杯配偶!
我正在尝试使用GridFS在MEAN Application
中上传文件。我正在使用这个教程http://www.codetutorial.io/file-upload-gridfs-mean-stack-meanjs/。
实施并检查十次后,我仍然会在TypeError: Cannot read property "filefield" of undefined
中收到此错误:upload.server.controller.js
。但在我看来,文件字段正确传递给路由和控制器。
这是我的html表单:
<form action="/upload/" method="post" enctype="multipart/form-data">
<input type="file" name="filefield">
<button type="submit">Hochladen</button>
</form>
路线:
var upload = require ('./controllers/upload.server.controller');
app.route('/upload/:filename')
.get(upload.read);
app.route('/upload/')
.post(upload.create);
控制器的创建部分:
'use strict';
var mongoose = require('mongoose'),
_ = require ('lodash');
var Grid = require('gridfs-stream');
Grid.mongo = mongoose.mongo;
var gfs = new Grid(mongoose.connection.db);
exports.create = function(req, res) {
var part = req.files.filefield;
var writeStream = gfs.createWriteStream({
filename: part.name,
mode: 'w',
content_type:part.mimetype
});
writeStream.on('close', function() {
return res.status(200).send({
message: 'Success'
});
});
writeStream.write(part.data);
writeStream.end();
};
有人知道如何解决这个错误吗?
来自德国的问候,
大卫
答案 0 :(得分:0)
您可能忘记在index.js文件中包含一个正文解析器:
busboyBodyParser = require('busboy-body-parser'),
app.use(busboyBodyParser());
没有它,req对象中没有文件。
答案 1 :(得分:0)
你可能已经放置了
app.use(busboyBodyParser());
最后。尽量把它放在上面。它会起作用。