离子错误(相机和文件传输插件)
Ionic error (Camera and File transfer plugin)
我正在开发一个移动应用程序,当用户尝试更改图片配置文件时出现错误,经过大量调试后的错误不在相机中,而是在我尝试发送时在文件传输功能中图像到服务器,没有错误代码或消息,只是应用程序停止工作,这是代码:
$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 承诺的函数上适当地调用 return。快速回顾一下,$scope.savePicture();
应该是 return $scope.savePicture();
和$cordovaFileTransfer.upload()
也应该是return $cordovaFileTransfer.upload()
我会从那里开始,看看你是否开始取得一些进展。
我不得不调试整个应用程序,包括 android 的 cat 日志,我发现了问题。
问题是我将 Ionic 与 crosswalk 一起使用,而我使用的 FileTransfer 版本不支持 crosswalk。
我通过安装最新版本的文件传输解决了这个问题:
cordova-plugin-file-transfer 1.2.1 "File Transfer"
我正在开发一个移动应用程序,当用户尝试更改图片配置文件时出现错误,经过大量调试后的错误不在相机中,而是在我尝试发送时在文件传输功能中图像到服务器,没有错误代码或消息,只是应用程序停止工作,这是代码:
$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 承诺的函数上适当地调用 return。快速回顾一下,$scope.savePicture();
应该是 return $scope.savePicture();
和$cordovaFileTransfer.upload()
也应该是return $cordovaFileTransfer.upload()
我会从那里开始,看看你是否开始取得一些进展。
我不得不调试整个应用程序,包括 android 的 cat 日志,我发现了问题。
问题是我将 Ionic 与 crosswalk 一起使用,而我使用的 FileTransfer 版本不支持 crosswalk。
我通过安装最新版本的文件传输解决了这个问题:
cordova-plugin-file-transfer 1.2.1 "File Transfer"