Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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
Angularjs 异步文件上传(使用FormData),在服务器端使用Node.JS Express和强大的_Angularjs_Node.js_Formidable - Fatal编程技术网

Angularjs 异步文件上传(使用FormData),在服务器端使用Node.JS Express和强大的

Angularjs 异步文件上传(使用FormData),在服务器端使用Node.JS Express和强大的,angularjs,node.js,formidable,Angularjs,Node.js,Formidable,我想将文件异步上传到Node.JS Express 我对我的HTML和Javascript非常自信,因为在服务器端的ASP.NET中,我已经多次使用过它们 现在,我想在服务器端的Node.JS和Express中使用相同的客户端代码 HTML: 如何访问正在提交的文件? 正如您所看到的,console.log(files.length)给了我未定义的您是否尝试将res.json()移动到表单.parse()的回调中?在解析请求数据之前,连接可能已关闭。哦,我将尝试。。。忽略了form.parse(

我想将文件异步上传到Node.JS Express

我对我的HTML和Javascript非常自信,因为在服务器端的ASP.NET中,我已经多次使用过它们

现在,我想在服务器端的Node.JS和Express中使用相同的客户端代码

HTML:

如何访问正在提交的文件?

正如您所看到的,
console.log(files.length)
给了我
未定义的

您是否尝试将
res.json()
移动到
表单.parse()的回调中?在解析请求数据之前,连接可能已关闭。哦,我将尝试。。。忽略了
form.parse()
是异步的这一事实!它抛出了
undefined
,您设置
“内容类型”:undefined
有什么原因吗?您应该检查
console.dir(req.headers['content-type'])
的输出,并确保它显示
multipart/form data
    <form id="form">
        <div class="form-group">
            <label>XML files (1 or many)</label>
            <input type="file" class="form-control" id="files" name="dummy" multiple ng-disabled="processing" accept=".xml" />
        </div>

        <div class="form-group">
            <button class="btn btn-default" ng-click="process()" ng-disabled="processing">
                <span ng-show="processing">Processing...</span>
                <span ng-show="!processing">Convert</span>
            </button>
        </div>
    </form>
        $scope.process = function () {
            $scope.processing = true;

            var formData = new FormData();

            for (var i = 0; i < document.getElementById('files').files.length; i++) {
                formData.append('file' + i, document.getElementById('files').files[i]);
            }

            var httpRequest = $http({
                method: 'post',
                url: "/api/parser/parse",
                data: formData,
                params: {
                },
                transformRequest: angular.identity,
                headers: { 'Content-Type': undefined }
            });

            httpRequest.success(function (response) {
                $scope.response = response;

                if (response.error) {
                    toaster.pop('error', response.message);
                    return;
                }

                toaster.pop('success', "", "Finished processing");
            });

            httpRequest['finally'](function () {
                $scope.processing = false;
            });
        };
    }]);
var express = require('express');
var formidable = require('formidable');
var _ = require('underscore');

var router = express.Router();

router.post('/parse', function(req, res, next) {

    var form = new formidable.IncomingForm();

    form.parse(req, function(err, fields, files) {
        if (err) {
            console.error(err.message);
            return;
        }

        console.log(files.length);  // Is outputting "undefined"
    });

    res.json({
        error: false
    });
});