Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/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 无法在node.js中发布_Javascript_Node.js_Express - Fatal编程技术网

Javascript 无法在node.js中发布

Javascript 无法在node.js中发布,javascript,node.js,express,Javascript,Node.js,Express,我想使用node.js上传文件,因为它是新的,我尝试检查文件是否正在发送到服务器。 html 当我上传东西时,它会抛出错误 无法读取未定义的文件 作为后端新手,我不知道为什么会发生这种情况,为什么服务器不接收文件?您需要app.use()文件解析器。例如,您可以使用。你可以在上面的链接获得更多关于选项和用法的信息;简单的设置如下所示: var busboy = require('connect-busboy'); app.use(busboy()); app.post("/img",funct

我想使用node.js上传文件,因为它是新的,我尝试检查文件是否正在发送到服务器。 html

当我上传东西时,它会抛出错误

无法读取未定义的文件

作为后端新手,我不知道为什么会发生这种情况,为什么服务器不接收文件?

您需要
app.use()
文件解析器。例如,您可以使用。你可以在上面的链接获得更多关于选项和用法的信息;简单的设置如下所示:

var busboy = require('connect-busboy');
app.use(busboy());

app.post("/img",function(req,res){
        req.busboy.on('file', function (fieldname, file, filename, encoding, mimetype) {
            // ...
        });
        req.busboy.on('field', function (key, value, keyTruncated, valueTruncated) {
            // ...
        });
        req.pipe(req.busboy);
        // etc ...
});

如上所述,您必须为多部分实体使用实体解析器,但更好的解决方案是使用express中间件,它允许您像在OP中一样使用
req.files

此外,multer构建在busboy之上,busboy是node.js最快的多部分主体解析器

对于multer:

var express = require('express'),
    multer = require("multer"),
    app = express();

app.use(multer({
    dest: path.resolve(__root + path.sep + config.get("localFolders").rawImages),
    limits: {
         files: 2
    }
}));

// handle file upload
app.post("/img", function (req, res, next) {
    var image = req.files.image;
    // do something with image;
    console.log(image.name);
});

在上面提供的链接中查看multer的文档。祝你好运

哪一行抛出了这个错误?fileparser没有内置/本机modile,或者我必须使用外部模块来实现吗?我是begginer,一开始我想不使用外部模块就知道它不,没有。你唯一的选择就是自己编写代码@杰迪姆对此很感兴趣。我知道我可能会使用一些模块,但我在哪里可以读到这些——关于创建自己的文件解析器背后的东西?我找不到任何东西,我认为一个好的起点应该是阅读现有文件解析器的源代码,如上文所述。然后,您还可以找到在谷歌搜索部分内容的术语it@J.ddexpress有一个完整的中间件用于解析上传的文件。请在下面查看我的回答。:)
var busboy = require('connect-busboy');
app.use(busboy());

app.post("/img",function(req,res){
        req.busboy.on('file', function (fieldname, file, filename, encoding, mimetype) {
            // ...
        });
        req.busboy.on('field', function (key, value, keyTruncated, valueTruncated) {
            // ...
        });
        req.pipe(req.busboy);
        // etc ...
});
var express = require('express'),
    multer = require("multer"),
    app = express();

app.use(multer({
    dest: path.resolve(__root + path.sep + config.get("localFolders").rawImages),
    limits: {
         files: 2
    }
}));

// handle file upload
app.post("/img", function (req, res, next) {
    var image = req.files.image;
    // do something with image;
    console.log(image.name);
});