0

我有简单的多部分表单数据

<form action="/upload" enctype="multipart/form-data" method="post">
      <span class="btn btn-file">
        <input type="file" name="file" ng-model="file"/>
        <span class="btn btn-primary" ng-click="upload()">Upload</span>
      </span>
</form>

我想做什么,将所有与文件相关的信息发布到用node.js编写的服务器

server.js 这是用节点编写的文件上传处理程序。Formidable 需要文件的所有参数。

upload: function uploadfn (req, res) {

    var form = new formidable.IncomingForm();
    form.parse(req, function(err, fields, files) {
        // `file` is the name of the <input> field of type `file`
        var old_path = files.file.path,
        file_size = files.file.size,
        file_ext = files.file.name.split('.').pop(),
        index = old_path.lastIndexOf('/') + 1,
        file_name = old_path.substr(index),
        new_path = path.join(process.env.PWD, '/uploads/', file_name + '.' + file_ext);
        fs.readFile(old_path, function(err, data) {
            fs.writeFile(new_path, data, function(err) {
                fs.unlink(old_path, function(err) {
                    if (err) {
                        res.status(500);
                        res.json({'success': false});
                    } else {
                        res.status(200);
                        res.json({'success': true});
                    }
                });
            });
        });
    });
}

我坚持的事情是,我已经准备好有角度的服务调用,如下所示:

service.factory('FileUpload', function ($resource) {
    return $resource('/upload', {}, {
        post: {method: 'POST'}
    });
});

此调用从角度控制器命中后端,如下所示

$scope.upload = function(){
    console.log($scope.file);
    FileUpload.post(function(){
    });
}

我不确定如何发布文件提交以便节点可以捕获它。$scope.file 也未定义。

请帮我解决这个问题。

4

1 回答 1

0

有一个很好的 angularjs 文件上传指令,尝试使用它 https://github.com/danialfarid/angular-file-upload

于 2014-09-03T07:35:27.027 回答