Phonegap - ios9文件输入

时间:2015-09-21 14:36:52

标签: javascript ios file cordova input

我遇到了phonegap和iOS 9的问题,ios 8工作正常,当你点击文件输入时,它会在屏幕中间显示一个取消按钮,在点击时什么都不做。文件输入在safari中运行良好,但在我构建的应用程序中,它没有。

我意识到有一个phonegap文件上传器API,但我使用我的应用程序作为我的网站的移动版本的网络浏览器,所以我还没有构建一个完全原生的应用程序,这是一个快速的解决方案为了我。

这可能是因为新的操作表样式或ios 9中的操作表中添加了新选项。

有没有人有解决方案可以跳过操作表,点击输入文件时我会直接进入相机胶卷?或者对此有任何解决方法?

1 个答案:

答案 0 :(得分:0)

我转移到插件 - cordova-plugin-camera,这解决了问题。

点击输入类型文件后:

  e.preventDefault();

  navigator.notification.confirm(
    'Please select image', // message
    function (buttonIndex) {
      if (buttonIndex === 1) {
        photoFromSource(navigator.camera.PictureSourceType.CAMERA);
      } else {
        photoFromSource(navigator.camera.PictureSourceType.PHOTOLIBRARY);
      }
    },            // callback to invoke with index of button pressed
    'Image capture',           // title
    ['Camera', 'Gallery']     // buttonLabels
  );

  function photoFromSource(source) {
    var targetWidth = 640,
      targetHeight = 640,
      onSuccess = function (imageURI) {

        var image = new Image(),
          canvas = document.createElement('canvas'),
          canvasContext = canvas.getContext('2d');

        image.onload = function () {
          canvas.width = image.width;
          canvas.height = image.height;
          canvasContext.drawImage(image, 0, 0, image.width, image.height);

          var dataURL = canvas.toDataURL();

          self.model.set('imageData', dataURL);
          self.model.setDataAttr('image', true);
          self.render();
        };

        image.src = imageURI;
      },
      onFail = function (message) {
        // Ignore if no image seleted
        if (!/^no image selected$/.test(message))
          alert('Failed because: ' + message);
      },
      opts = {
         quality: 50,
         destinationType: navigator.camera.DestinationType.FILE_URI,
         sourceType: source,
         mediaType: navigator.camera.MediaType.PICTURE,
         targetWidth: targetWidth,
         targetHeight: targetHeight,
         encodingType: navigator.camera.EncodingType.JPEG,
         correctOrientation: true,
         cameraDirection: navigator.camera.Direction.BACK,
         saveToPhotoAlbum: false
      };

    try {
      navigator.camera.getPicture(onSuccess, onFail, opts);
    }
    catch (e) {
      alert('Could not capture image: ' + e);
    }
  };