【发布时间】:2014-09-20 18:49:35
【问题描述】:
我正在使用 Cordova 和 Ionic 框架开发适用于 iOS 和 Android 的移动应用程序。需要有“发送照片”和相关功能,我正在使用 Cordova 的 FileTransfer 来执行此操作。
它在 iOS 模拟器上完美运行,但在 Android 设备上抛出“错误代码 = 1”。
我知道这意味着 file_not_found 或类似的。
请注意,如果我从相机拍照或从图库中选择一张,就会发生这种情况。
这是我的代码:
$scope.takePic = function() {
var options = {
quality: 50,
destinationType: navigator.camera.DestinationType.FILE_URI,
sourceType: 0, // 0:Photo Library, 1=Camera, 2=Saved Photo Album
encodingType: 0 // 0=JPG 1=PNG
}
navigator.camera.getPicture(onSuccess, onFail, options);
}
var onSuccess = function(FILE_URI) {
window.resolveLocalFileSystemURL(FILE_URI, function(fileEntry) {
alert("full: " + JSON.stringify(fileEntry));
var realUrl = fileEntry.toURL();
$scope.picData = realUrl;
$scope.$apply();
console.log("real URL", realUrl);
});
};
var onFail = function(e) {
console.log("On fail " + e);
}
function win(r) {
console.log("Code = " + r.responseCode);
console.log("Response = " + r.response);
console.log("Sent = " + r.bytesSent);
Flash.success("Wysłano");
var response = JSON.parse(r.response);
$scope.attachment_id = response.data;
$scope.$apply();
$http.post($rootScope.baseServerUrl + 'Members/changeAvatar', {attachment_id: response.data}).success( function (response){
console.log(response);
});
}
function fail(error) {
alert("An error has occurred: Code = " + error.code);
console.log("upload error source " + error.source);
console.log("upload error target " + error.target);
}
$scope.send = function() {
Flash.warning('wysyłam');
var myImg = $scope.picData;
alert(myImg);
var options = new FileUploadOptions();
options.headers = {
Accept: "application/json",
Connection: "close"
}
options.fileKey="file";
options.fileName=$scope.picData.substr($scope.picData.lastIndexOf('/')+1);
options.mimeType="image/jpeg";
options.chunkedMode = false;
var ft = new FileTransfer();
ft.upload(myImg, encodeURI($rootScope.baseServerUrl + 'media/Attachments/add'), win, fail, options);
}
$scope.takePic 和 send 通过按钮单击调用。有很多警报和控制台,因为我试图找出它不起作用的原因。
从 android 上的图库中挑选一张图片后,我得到:
file:///storage/sdcard0/download/file-name.jpg
在 iOS 模拟器上:
file:///Users//Library/Application%20Support/iPhone%20Simulator/7.1/Applications/B5FB2081-54E7-4335-8856-84C6499E6B07/tmp/cdv_photo_038.jpg
通过使用这条路径,我可以使用<img src="{{picData}}"> 显示这张图片,这在两个平台上都适用。
但如果我尝试在 Android 设备上发送它,我会收到错误代码 = 1。在 iOS sim 上它会发送照片、得到正确响应、更改头像...一切。
Cordova 和插件 File 和 FileTransfer 都是最新的。
【问题讨论】:
-
只是
error code =1? logcat 或控制台中没有可以提供更多提示的内容? -
我有完全相同的问题,只是相反。我可以使用 android 上传图像,而不是使用 iOS。只得到错误代码1,我知道这是一个找不到文件的代码。
标签: android ios cordova ios-simulator ionic-framework