首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >angular文件upload+sails skipper不上传文件

angular文件upload+sails skipper不上传文件
EN

Stack Overflow用户
提问于 2015-01-26 20:57:22
回答 1查看 710关注 0票数 0

我的前端使用angularJS,后端使用sails.js/expressjs。我正在使用ng- file -upload实现一个文件上传功能,奇怪的是,这个文件似乎从未成功上传到服务器上……这是我的angularJS代码:

代码语言:javascript
复制
$scope.$watch('data.chosenImageFile', function() {
    if ($scope.data.chosenImageFile) {
        console.log($scope.data.chosenImageFile);
        $scope.upload = $upload.upload({
            url: '/upload_user_avatar',
            method: 'POST',
            file: $scope.data.chosenImageFile
        }).progress(function(evt) {
            console.log('progress: ' + parseInt(100.0 * evt.loaded / evt.total));
        }).success(function(data, status, headers, config) {
            console.log(data);
        });
    }
});

这是我的sails.js代码:

代码语言:javascript
复制
uploadUserAvatar: function(req, res) {
    req.file('avatar').upload(function(err, files) {
        if (err) return res.send(500, err);
        return res.json({
            message: files.length + ' file(s) uploaded successfully!',
            files: files
        });
    });
},

并且我总是从服务器得到以下响应:

代码语言:javascript
复制
Object {message: "0 file(s) uploaded successfully!", files: Array[0]}

当我检查相应的服务器上传目标文件夹时,什么也没有....有人知道为什么吗,或者可以提供一些帮助?一定会很感激的!

EN

回答 1

Stack Overflow用户

发布于 2015-01-26 22:12:35

好吧,这个问题不是很聪明,我知道问题出在哪里:ng- fileFormDataName -upload的默认文件是"file",因为我在服务器端使用的是req.file('avatar'),我真的应该在我的angular代码中添加以下设置选项:

代码语言:javascript
复制
        fileFormDataName: 'avatar', 

这使得它看起来是这样的:

代码语言:javascript
复制
$scope.$watch('data.chosenImageFile', function() {
    if ($scope.data.chosenImageFile) {
        console.log($scope.data.chosenImageFile);
        $scope.upload = $upload.upload({
            url: '/upload_user_avatar',
            method: 'POST',
            fileFormDataName: 'avatar',
            file: $scope.data.chosenImageFile
        }).progress(function(evt) {
            console.log('progress: ' + parseInt(100.0 * evt.loaded / evt.total));
        }).success(function(data, status, headers, config) {
            console.log(data);
        });
    }
});

更新

根据@Anupam Bhaskar的请求,我还在下面添加了一个文件上传dropzone的HTML代码:

代码语言:javascript
复制
<div ng-file-drop ng-if="!data.isUploading" ng-model="data.chosenImageFile" class="avatar-dropzone pull-left" drag-over-class="upload-dropzone" ng-file-change="avatarUpload.fileSelected('/upload_user_avatar', data.user, data)" multiple="false" allow-dir="true" accept="*">
   <div class="text-center upload-sign">+</div>
</div>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28150545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档