Javascript 使用GridFS在平均堆栈中上载文件:获取错误
干杯,伙计们Javascript 使用GridFS在平均堆栈中上载文件:获取错误,javascript,angularjs,mongoose,mean,gridfs,Javascript,Angularjs,Mongoose,Mean,Gridfs,干杯,伙计们 我正在尝试使用GridFS在我的MEAN应用程序中上传文件。我正在使用这个教程 在实现它并检查了十次之后,我仍然得到这个错误:TypeError:无法读取upload.server.controller.js中未定义的的属性“filefield”。但在我看来,文件字段被正确地传递到路由和控制器 这是我的html表单: <form action="/upload/" method="post" enctype="multipart/form-data"> <inpu
我正在尝试使用GridFS在我的
MEAN应用程序中上传文件。我正在使用这个教程
在实现它并检查了十次之后,我仍然得到这个错误:TypeError:无法读取upload.server.controller.js
中未定义的
的属性“filefield”。但在我看来,文件字段被正确地传递到路由和控制器
这是我的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();
};
和控制器的创建部分:
<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();
};
有人知道如何修复此错误吗?
来自德国的问候,
David您可能忘了在index.js文件中包含正文解析器:
busboyBodyParser = require('busboy-body-parser'),
app.use(busboyBodyParser());
没有它,req对象中就没有文件。您可能已经放置了
app.use(busboyBodyParser());
最后。试着把它放在上面。它会工作。你能调试一下或者把请求文件中的内容记录下来吗?我放了一个console.log(请求文件);在var part=req.files.filefield的正上方,我从中获得控制台错误。获取“未定义”以便html表单都不发送文件或正文解析器不起作用。尝试通过类似curl的curl-XPOST-F ffilefield=@path/to/file url/uploadTypeError在“Object.exports.create[as handle]和“Function.proto.process_params”处抛出