Ionic:使用ng-cordova fileTransfer和Camera插件上传图片时获取错误代码3

时间:2017-01-04 09:29:12

标签: android angularjs cordova

我得到" Code 3"尝试使用FileTransfer插件将图像文件从我的离子应用程序上传到远程服务器时出现(连接被拒绝)错误。

我使用了相机插件并将捕获的图像移动到永久存储

$scope.selectPicture = function(sourceType) {
    var options = {
        quality: 75,
        destinationType: Camera.DestinationType.FILE_URI,
        sourceType: Camera.PictureSourceType.CAMERA,
        allowEdit: true,
        encodingType: Camera.EncodingType.JPEG,
        popoverOptions: CameraPopoverOptions,
        saveToPhotoAlbum: false,
        correctOrientation:true
    };

    $cordovaCamera.getPicture(options).then(function(imagePath) {
        var currentName = imagePath.replace(/^.*[\\\/]/, '');
        //Create a new name for the photo
        var d = new Date(),
        n = d.getTime(),
        newFileName =  n + ".jpg";

        localStorage.setItem('checklist',newFileName);
        var namePath = imagePath.substr(0, imagePath.lastIndexOf('/') + 1);
          // Move the file to permanent storage
          $cordovaFile.moveFile(namePath, currentName, cordova.file.dataDirectory, newFileName).then(function(success){
            $scope.image = newFileName;
            localStorage.setItem('checklist',newFileName);
          }, function(error){
            $scope.showAlert('Error', error.exception);

          });
    }, function(err) {
      // error
    });
};

然后我使用FileTransfer插件

上传图像
$scope.reportSending = function(){
    $scope.report_no = localStorage.getItem('reportNumber');
    $scope.imageLoc = localStorage.getItem('checklist');

    var server = "http://localhost/api/api/public/api/sendreport",

    filePath = cordova.file.dataDirectory + $scope.imageLoc;

    var date = new Date();

    var options = {
        fileKey: "file",
        fileName: $scope.imageLoc,
        chunkedMode: false,
        mimeType: "multipart/form-data",
        params : {
            report_no : $scope.report_no
        }
    };

    $cordovaFileTransfer.upload(server, filePath, options).then(function(result) {
        console.log(JSON.stringify(result.response));

    }, function(err) {
        console.log("ERROR: " + JSON.stringify(err));
        //alert(JSON.stringify(err));
    }, function (progress) {
        // constant progress updates
    });

};

当我执行reportSending()函数时,它返回一个错误:

ERROR: {"code":3,"source":"file:///data/user/0/com.ionicframework.appnew343084/files/1483519701226.jpg","target":"http://localhost/api/api/public/api/sendreport","http_status":null,"body":null,"exception":"Connection refused"}

它说"连接被拒绝"在异常中但是当我在邮递员中尝试API时,我可以成功上传文件。

1 个答案:

答案 0 :(得分:1)

所以在搜索了大量的论坛后,我发现我的问题很简单..

更改API网址解决了问题。

var server = "http://localhost/api/api/public/api/sendreport",

var server = "http://192.168.1.17/api/api/public/api/sendreport";

而不是使用localhost我将URL指向本地服务器的IP 我还注意到我在API的变量声明结尾处使用了逗号,而不是分号。

现在一切正常。