成功上传后如何从列表中删除文件?r

时间:2014-10-17 06:24:26

标签: android angularjs cordova ionic-framework

这是我关于stackoverflow的第一个问题所以请忍受我的noobness。 我正在编写一个带有离子框架的cordova应用程序,我正在尝试将多个文件从相机上传到服务器,同时在列表中显示上传的文件并显示每个文件的进度。但我似乎无法弄清楚如何在成功上传后从显示列表中删除文件。我试图使用我将其推送到阵列后得到的文件的ID,但有时这些似乎是不正确的。例如。 progress事件中的ID与successevent中的ID不同,因此我从列表中删除了错误的文件,或者有时没有文件。

  $scope.choosePic = function() {
   window.imagePicker.getPictures(
      function(results) {
          for (var i = 0; i < results.length; i++) {
              console.log('Image URI: ' + results[i]);
              onSuccess(results[i]);
          }
      }, function (error) {
          console.log('Error: ' + error);
      }
  );
}

$scope.delete = function ( item ) {
  $scope.items.splice($scope.items.indexOf(item), 1);
}

var onSuccess = function(FILE_URI) {
    console.log(FILE_URI);
    $scope.picData = FILE_URI;

    var filename = $scope.makeid();
    var length = $scope.items.push({name: filename,  image: $scope.picData, progress:0 });
    $scope.$apply();
    send($scope.picData,filename,length);



};
var onFail = function(e) {
    console.log("On fail " + e);
}
send = function(imagedata,filename,length) {
    var options = new FileUploadOptions();
    var url = window.localStorage['URL'];
    options.fileKey="file";
    options.chunkedMode = false;

    options.mimeType="image/jpeg";
    options.headers = {Connection: "close"};

    var params = {};
    params.APIKEY = window.localStorage['APIKEY'];
    params.DEVICEID = device.uuid;
    options.params = params;

    var ft = new FileTransfer();


    var ID = length -1;


    ft.onprogress = function(progressEvent) {
      if (progressEvent.lengthComputable) {
            var perc = Math.floor(progressEvent.loaded / progressEvent.total * 100);
        if(!(typeof $scope.items[ID] == 'undefined')){
          $scope.items[ID].progress=perc;
          $scope.$apply();
          console.log($scope.items[ID].name + "Upload progress: " + perc);
        }
        } else {

        }
    };
    function onUploadSuccess(r) {
        //alert("ID = " + ID + " Code = " + r.responseCode + "Response = " + r.response + "Sent = " + r.bytesSent);
        //alert($scope.items[ID].name);
        console.log("ID = " + ID + " Code = " + r.responseCode + "Response = " + r.response + "Sent = " + r.bytesSent);
        $scope.items.splice(ID, 1); // remove uploaded image from list
        $scope.$apply();
    }
    function onUploadFail(error) {
      alert("An error has occurred: Code = " + error.code);
      //console.log("upload error source " + error.source);
      // console.log("upload error target " + error.target);
    }

    options.fileName=filename+".jpg";
    ft.upload(imagedata, encodeURI(url), onUploadSuccess, onUploadFail, options);

}

});

我知道这段代码可能比较笨拙,但这是我第一次使用angular.js和cordova以及类似的东西。感谢您的帮助

0 个答案:

没有答案
相关问题