5

我已经尝试实现这项工作 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 上,有人知道问题出在哪里吗?

4

3 回答 3

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 前面添加 // 它会在正确的路径中查找。

干杯,我会将此问题发布到他们的错误跟踪器

于 2013-03-20T23:34:46.110 回答
0

此问题已解决。请参阅“ https://issues.apache.org/jira/browse/CB-2736 ”。但是,在我的 Windows 8 Phone 上,我无法访问要在 HTML IMG 标记中显示的照片文件。我已经尝试过 fileEntry.fullPath、fileEntry.toURL() 和 fileEntry.toNativeURL()。

于 2014-04-25T12:48:45.923 回答
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);
});
于 2016-09-03T06:18:59.627 回答