我已经尝试过实施这项工作 1. 拍摄照片 2. 从保存的地方获取照片 3. 将照片读为base64
我遵循了这种方法:
var cameraOptions = {};
function capturePhoto() {
console.log("capture photo");
cameraOptions = { quality: 70, destinationType: Camera.DestinationType.FILE_URI, sourceType: Camera.PictureSourceType.CAMERA, saveToPhotoAlbum: true };
doIt();
}
function doIt() {
navigator.camera.getPicture(onCameraSuccess, onCameraFail, cameraOptions);
}
function onCameraSuccess(imageURI) {
console.log("Camera Success");
$('#MokhalfaPhotoLocation').val(imageURI);
console.log("Image URI: " + imageURI);
window.resolveLocalFileSystemURI(imageURI, onResolveImageSuccess, onFail); //get the file from the physical path...
}
function onResolveImageSuccess(fileEntry) {
fileEntry.file(gotFile, onFail);
}
function gotFile(file) {
readDataUrl(file);
}
function readDataUrl(file) {
console.log("read file as dataUrl");
var reader = new FileReader();
reader.onloadend = function (evt) {
console.log("Read as data URL");
window.localStorage.setItem("mokhalfaPhotoURL", evt.target.result);
};
reader.readAsDataURL(file);
}
这个链工作正常直到CameraSuccess然后它在线上失败
window.resolveLocalFileSystemURI(imageURI, onResolveImageSuccess, onFail);
它输入了onFail事件,错误代码= 5
不过,这段代码在Android上运行良好,但问题出在Windows Phone 7上 任何人都知道这是什么问题?答案 0 :(得分:4)
我最近遇到了这个错误。解决方案非常简单:)
function onCameraSuccess(imageURI) {
console.log("Camera Success");
$('#MokhalfaPhotoLocation').val(imageURI);
console.log("Image URI: " + imageURI);
window.resolveLocalFileSystemURI("//" + imageURI, onResolveImageSuccess, onFail); //get the file from the physical path...
}
如果你警告imageURI它应该看起来像(/ CachedImagePath / etcetc /),所以window.resolveLocalFileSystemURI不知道在哪里解决,所以通过在URI前面//它看起来是正确的路径。
干杯,我会将此问题发布到他们的错误跟踪器
答案 1 :(得分:0)
此问题已得到解决。请参阅" https://issues.apache.org/jira/browse/CB-2736"。但是,在我的Windows 8手机上,我无法访问要在HTML IMG标记中显示的照片文件。我已经尝试过fileEntry.fullPath,fileEntry.toURL()和fileEntry.toNativeURL()。
答案 2 :(得分:0)
你应该尝试这样的事情
$window.resolveLocalFileSystemURL("file://" + videoURI, function (fileEntry) {
console.log('Success: '+fileEntry.name);
fileEntry.getMetadata(function(metadata) {
if(metadata.size>20971520){
$ionicPopup.alert({
template: '<h5>Lo sentimos <i class="icon ion-sad-outline"></i> , el video sobre pasa el limite de peso</h5>',
title: 'Limite de peso',
});
}else{
}
});
}, function (err) {
console.log(err);
});