javascript - 使用 ng-file-upload 指令将文件上传到 sails.js 服务器

标签 javascript node.js angularjs file-upload sails.js

我正在尝试使用此指令将文件上传到 sails.js 应用程序服务器: ng-file-upload

我上传已选图片的客户端是这样的:

$upload.upload({
        url:'upload/item-image',
        headers:{
            'Content-Type': 'multipart/form-data'
        },
        data:{blah:'blah'},
        file: $scope.uploadFile,
        fileName:$scope.uploadFile.name
    }).success(function(data){
        console.log(data);
    }).error(function(err){
        console.log(err);
    });

我处理服务器上载的 sails.js Controller 方法是这样开始的:

upload: function (req, res) {
    req.file('item-image').upload(function (err, files) {
        if (err)
            return res.serverError(err);
        if(!files.length)
            return res.serverError('No files received for upload.');

        var file = files[0];
   ...
   }
...
}

但是,当服务器函数被调用时,正文中的 json 数据存在,req.file('不管放在这里') 回调没有找到任何文件。

提前致谢。

最佳答案

req.file 的参数需要是请求中的字段名称,Sails 应该在其中查找上传的文件。如果您正在使用类似以下内容的简单 HTML 表单:

<input type="file" name="myFileField" />

然后在您的 Controller 代码中您将拥有:

req.file('myFileField').upload(...);

使用像 ng-file-upload 这样的 uploader 小部件这个问题中引用的小部件,有时要弄清楚该字段名称是什么有点棘手。在这种情况下,它隐藏在 usage instructions 中:

//fileFormDataName: myFile, // or a list of names for multiple files (html5). 
                            // Default is 'file' 

所以你可以设置fileFormDataName来改变上传字段名称,否则默认为file

如果您无法在文档中或通过检查 HTML 找到字段名称,最简单的方法就是上传(即使不成功)并使用 Chrome 中的开发人员工具检查网络请求:

enter image description here

这是来自 Angular 文件上传演示页面。您可以在右下角看到它说 name="myFile";这就是你要找的。在这种情况下,文件字段称为 myFile

关于javascript - 使用 ng-file-upload 指令将文件上传到 sails.js 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25976950/

相关文章:

javascript - 将值从 DIV 元素传递到输入

javascript - Hapi/Joi 验证 - 不同的 Joi.regex 取决于另一个键值

java - 如何为我的 REST 应用程序配置 https?

javascript - Angular 的动态属性

javascript - ng-repeat 中的数组未显示

javascript - 如何让我的 Phaser 游戏射出不止一支箭?

javascript - 为什么我无法在 Chrome 应用中选择文件?

javascript - 转义字符生成 "missing ) after argument list"错误?

node.js - MongoDB atlas成本计算,以及如何节省成本

javascript - 函数可以在正确的情况下自动调用回调或返回 promise 吗?