【问题标题】:File Upload not working with Angular and Node.JS文件上传不适用于 Angular 和 Node.JS
【发布时间】:2015-09-15 03:08:15
【问题描述】:

我在上传文件以使用 Angular ng-File-Upload 模块和我的 Node.js 服务器时遇到问题。在示例中,它说我应该能够通过“文件”或“文件”属性(req.file 或 req.files)访问客户端请求中遇到的文件。但是,请求时的此类属性是“未定义的”而且我在客户端请求中找不到文件的痕迹。

我的客户端代码如下所示:

$scope.addFiles = function(files){
        console.log(files);
        $scope.information.files = files;
            Upload.upload({
                url: 'http://www.uploadURL.com/uploadFiles',
                file: files
            }).progress(function(evt){
                console.log('progress: ' + parseInt(100.0 * evt.loaded / evt.total) + '% file :'+ evt.config.file.name);
            }).success(function(data, status){
                console.log('data '+ data);
                console.log('status '+status);
            }).error(function(data, status){
                console.log('bad data '+ data);
                console.log('bad status '+ data);
            });
        }
    };

用于上传的 HTML 行如下所示:

<button class="btn btn-primary btn-lg btn-block uploadButton" type="file" ngf-select="addFiles($files)" multiple accept="*"> Select Files</button>

服务器端目前是这样的:

app.post('/uploadFiles', function(req, res){
        var tempfiles = [];
        console.log(req.file);
        console.log(req.files);
});

以上两个控制台日志都返回“未定义”。如果有人对如何解决此问题/更好的文件上传方法有任何想法,我将不胜感激。

【问题讨论】:

    标签: javascript angularjs node.js ng-file-upload


    【解决方案1】:

    post 数据在请求的正文中,您需要 body-parser 中间件来解析 post 数据并将其设置为请求中的字段。签出this

    【讨论】:

    • 那么通过body-parser,在这种特殊情况下解析body的代码会是什么样子?似乎有很多选项可供选择(url-encoded、raw、text、Json)。
    • 这里有一个示例github.com/danialfarid/ng-file-upload/wiki/Node-example,它展示了如何将 ng-file-upload 与另一个中间件一起使用。看看吧
    • 我最终使用了不同于推荐的解析器,但是它可以工作!感谢您的帮助/指导
    猜你喜欢
    • 2015-11-23
    • 2020-05-03
    • 1970-01-01
    • 2016-07-12
    • 2012-08-02
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    相关资源
    最近更新 更多