Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用GridFS在平均堆栈中上载文件:获取错误_Javascript_Angularjs_Mongoose_Mean_Gridfs - Fatal编程技术网

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”处抛出