Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 离子错误(摄像头和文件传输插件)_Javascript_Android_Cordova_Ionic Framework_Cordova Plugins - Fatal编程技术网

Javascript 离子错误(摄像头和文件传输插件)

Javascript 离子错误(摄像头和文件传输插件),javascript,android,cordova,ionic-framework,cordova-plugins,Javascript,Android,Cordova,Ionic Framework,Cordova Plugins,我正在开发一个移动应用程序,当用户尝试更改图片配置文件时,我收到一个错误,在进行了大量调试后,错误不在相机中,在我尝试将图像发送到服务器时,文件传输功能中存在错误,没有错误代码或消息,只是应用程序停止工作,代码如下: $scope.addImage = function (option) { var options = { quality: 75, targetWidth: 300, destinationType: Camera.DestinationType.DATA_URL,

我正在开发一个移动应用程序,当用户尝试更改图片配置文件时,我收到一个错误,在进行了大量调试后,错误不在相机中,在我尝试将图像发送到服务器时,文件传输功能中存在错误,没有错误代码或消息,只是应用程序停止工作,代码如下:

$scope.addImage = function (option) {
var options = {
  quality: 75,
  targetWidth: 300,
  destinationType: Camera.DestinationType.DATA_URL,
  targetHeight: 300,
  saveToPhotoAlbum: false,
  correctOrientation: true
};

if (option == 1) {
  options.sourceType = Camera.PictureSourceType.CAMERA;
} else {
  options.sourceType = Camera.PictureSourceType.PHOTOLIBRARY;
}

$cordovaCamera.getPicture(options).then(function (imageData) {
  console.log("IMAGE DATA");
  console.log(imageData);
  //alert("SUCCESS");
  $scope.user.image = "data:image/jpeg;base64," + imageData;
  console.log(JSON.stringify($scope.user));
  $scope.savePicture();
}, function (err) {
  alert("ERRROR");
  alert(JSON.stringify(err));
  // An error occured. Show a message to the user
});
};



$scope.savePicture = function () {
  var options = {
    fileKey: "avatar",
    fileName: "image.jpg",
    chunkedMode: false,
    mimeType: "image/jpeg",
    headers: {
      Authorization: "Bearer " + $auth.getToken()
    }
  };

  $cordovaFileTransfer.upload(api.getApi()+"user/updatephoto", $scope.user.image, options).then(function (result) {
    console.log("SUCCESS: " + JSON.stringify(result.response));
}, function (err) {
    console.log("ERROR: " + JSON.stringify(err));
    alert("ERROR: " + JSON.stringify(err));
}, function (progress) {
    // constant progress updates
});

};

感谢您的帮助

对于返回承诺的函数,您没有适当地调用return。快速查看,$scope.savePicture;应返回$scope.savePicture

$cordovaFileTransfer.upload也应返回$cordovaFileTransfer.upload


我将从那里开始,看看你是否开始取得一些进展。

我不得不调试整个应用程序,包括android的cat日志,我发现了问题

问题是,我正在使用Ionic和crosswalk,而我使用的FileTransfer版本不支持crosswalk

我只需安装最新版本的文件传输即可解决此问题:


cordova plugin file transfer 1.2.1 file transfer

您是否看到日志:console.logJSON.stringify$scope.user;这发生在savePicture之前?您好,在该日志中一切正常,错误在以下行:$cordoviletransfer.uploadapi.getApi+user/updatephoto、$scope.user.image、options.then函数结果没有错误消息或任何东西,应用程序刚刚停止工作您是否已安装:cordova plugin file&cordova plugin file transfer使用cordova plugin list命令验证。我想你有ngCordova.js启动了摄像头是的,我已经安装了这个插件:cordova插件crosswalk webview 1.2.0 crosswalk webview引擎cordova插件splashscreen 2.0.0 splashscreen cordova插件白名单1.0.0白名单org.apache.cordova.camera 0.3.6 camera org.apache.cordova.file 1.3.3文件org.apache.cordova.file-transfer 0.5.0文件传输org.apache.cordova.inappbrowser 0.6.0InAppBrowserHi,我试过你写的东西,但还是没用,你还有别的建议吗?