使用Cordova处理多个同步上传

时间:2016-05-21 14:46:50

标签: angularjs node.js cordova ionic-framework sails.js

我想使用sails js将4个图像从离子应用程序上传到服务器端。

用户可以在提交表单之前上传许多图像,因此我将所有图像保存在数组中,如下所示

var cameraOptions = {
                            quality: 100,
                            destinationType: Camera.DestinationType.NATIVE_URI,
                            sourceType : Camera.PictureSourceType.CAMERA,
                            encodingType: Camera.EncodingType.JPEG,
                            targetWidth: 500,
                            targetHeight: 500,
                            popoverOptions: CameraPopoverOptions,
                            saveToPhotoAlbum: false,
                            allowEdit:true
                        };
                        var success = function(data){
                            $mdDialog.hide();
                            if(key==null)
                            {
                                compteurImage =compteurImage+1;
                                $scope.$apply(function () {
                                    $scope.imgURI.push(data);

                                });
                                $scope.nombreImage=compteurImage;
                            }
                            else
                            {
                                $scope.$apply(function () {
                                    $scope.imgURI[key]=data;

                                });
                            }
                            $rootScope.image=$scope.imgURI;

                        };

在将所有图像放入阵列后,我在阵列上循环,然后将每个图像发送到服务器,如下所示

for (var i = 0; i<$rootScope.image.length;  i++) {
                      if (keepGoing) {
                        var options = new FileUploadOptions();
                        var params = {};
                        params.idArticle =response.article.idArticle;
                        var url=$rootScope.image[i].substr($rootScope.image[i].lastIndexOf('/') + 1);
                        options = {
                          fileKey: "file",
                          fileName:i+(url.split('?')[0]),
                          mimeType: "image/png",
                          idArticle: response.article.idArticle
                        };
                        options.params=params;
                        var failed = function (err) {
                            console.log(err);
                            keepGoing = false;                           
                        };
                        var success = function (result) {
                            count++;
                            if(count==$rootScope.image.length)
                            {
                              console.log("success");
                            }
                        };
                        var ft = new FileTransfer();
                        ft.upload($rootScope.image[i], Globals.urlServer + Globals.port + "/article/uploadImage", success, failed, options);
                      }

服务器端负责上传图像的控制器是/ article / uploadImage

 uploadImage:function(req,res)
{
    req.file('file')
        .upload({ dirname: '../../assets/imagesArticle'},function (err, uploadedFiles) {

            if (err) return res.serverError(err);
            else {
                var chemin = '';
                var type = '';
                uploadedFiles.forEach(function (file) {
                    chemin = require('path').basename(file.fd);
                    type = file.type;
                    Image.create({cheminImage:chemin, typeImage:type,article:req.body.idArticle}).exec(function(err,image){
                        if (err)
                        {

                            res.send({success:false});
                        }

                        if(image)
                        {
                           res.send({success:true});
                        }
                    })
                });

            }
        });
},

我的问题是,无论我上传多少张图片,当我在服务器端查看图像目录时,图像总是相同的,并且对应于图像阵列的最后一张图像。例如,如果我上传3个不同的图像,在服务器端我得到3个相同的图像,它们对应于数组中的第三个或最后一个图像。

我该如何解决?

0 个答案:

没有答案