[Android]Ionic ︰ 获取错误代码 3 时上载图像使用吴科尔多瓦文件传输和 Camera 插件

标签: Android AngularJS
发布时间: 2017/3/4 2:30:05
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我正在"代码 3"(连接拒绝) 错误时试图上传图像文件从我 ionic 到远程服务器使用文件传输插件的应用程序。

我使用 camera 插件和已捕获的图像移到永久存储

$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
    });
};

然后我上传的图像使用文件传输插件

$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:

因此搜索论坛吨后我发现我的问题是很简单。

更改 API url 固定的问题。

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

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

而不是使用本地主机我将 URL 指向我的本地服务器的 IP,我也注意到我用逗号 , 而不是 API 我变量声明末尾的分号。

现在一切正常,因为它应该。

赞助商