2017-07-10 2 views
1

Ich habe ein Problem auf meinem ionischen V1-Projekt mit einer Eingabedatei, ich versuche, eine Bildvorschau zu machen, um Mauskoordinaten vom Benutzer zu erhalten, bevor Sie es senden der Server. Wenn ich den Code im Browser unter Verwendung ionic serve laufen lasse, funktioniert alles gut, aber wenn ich es von einem Iphone 6-Gerät in Xcode-Simulator aus führe, zeigt es mir das Bild nicht an. Weiß jemand oder hatte dieses Problem?Ionic-V1 xcode Projekt zeige kein Bild von Eingang

hochgeladenes Bild von Web-Browser

enter image description here

hochgeladenes Bild von iphone

enter image description here Mein Code sieht wie folgt aus Bild hochladen Controller:

var ctrl = angular.module('uploadImageController', []); 

ctrl.controller('uploadImageController', ['$scope', '$http', '$state', function($scope, $http, $state) { 
let $constructor =() => { 
    $scope.coordonate = {}; 
    document.getElementById('imgPreview').onclick = function(e) { 
     $scope.coordonate.x = e.pageX - $(this).offset().left; 
     $scope.coordonate.y = e.pageY - $(this).offset().top; 
     document.getElementById('imgPreview').style = "display:none;"; 
    } 
    document.getElementById('firstImage').onchange = function(evt) { 
     var tgt = evt.target || window.event.srcElement, 
      files = tgt.files; 
     if (FileReader && files && files.length) { 
      var fr = new FileReader(); 
      fr.onload = function() { 
       document.getElementById('imgPreview').src = fr.result; 
      } 
      $scope.uploaded = 1; 
      fr.readAsDataURL(files[0]); 
     } else { 

     } 
    } 
} 

$scope.add = function() { 
    if ($scope.uploaded) { 
     if ($scope.coordonate.x && $scope.coordonate.x) { 
      alert($scope.coordonate.x) 
      var f = document.getElementById('secondImage').files[0], 
       r = new FileReader(); 
      console.log(f); 
      var formData = new FormData(); 
      formData.append('secondImage', f); 
      console.log("Add function"); 
      var f = document.getElementById('firstImage').files[0], 
       r = new FileReader(); 
      console.log(f); 
      formData.append('firstImage', f); 
      formData.append('coordonatex', $scope.coordonate.x.toFixed(0)); 
      formData.append('coordonatey', $scope.coordonate.y.toFixed(0)); 
      document.getElementById('loader').style = "display:block;"; 
      document.getElementById('content').style = "display:none;"; 

      $http({ method: 'POST', url: '/uploadImage', data: formData, headers: { 'Content-Type': undefined } }).then(function(response) { 

       setTimeout(function() { 
        document.getElementById('loader').style = "display:none;"; 
        document.getElementById('content').style = "display:block;"; 
        $state.go('result', { img: response.data }); 
       }, 0); 
      }) 
     } else { 
      alert('Choose a point'); 
     } 
    } else { 
     alert('Choose an image'); 
    } 
} 



$constructor(); 
}]) 

HTML-Vorlage für upload:

<!Doctype html> 
<ion-view title="uploadImage"> 
<ion-content> 
    <div id="loader" class="loader"></div> 
    <div style="height: 90px"></div> 
    <div class="animate-bottom" id="content"> 
     <div class="container-fuild" style="margin:auto; color:white;text-align:center;"> 
      <title>Upload new File</title> 
      <div class="row"> 
       <div class="col-xs-12"> 
        <h1>Upload first image</h1></div> 
      </div> 
      <div class="row"> 
       <div class="col-xs-12"><img src="" id="imgPreview" /></div> 
      </div> 
      <div class="row"> 
       <div class="col-xs-4 col-xs-offset-5"> 
        <input type="file" id="firstImage" name="file"/> 
       </div> 
      </div> 
      <div class="row"> 
       <div class="col-xs-12"> 
        <h1>Upload second image</h1></div> 
      </div> 
      <div class="row"> 
       <div class="col-xs-4 col-xs-offset-5"> 
        <input type="file" id="secondImage" name="secondImage" /> 
       </div> 
      </div> 
      <div class="row"> 
       <div class="col-xs-4 col-xs-offset-5"> 
         <button type="button" class="btn btn-primary" ng-click="add()">Simulate</button> 
       </div> 
      </div> 
     </div> 
</ion-content> 
</ion-view> 

Vielen Dank!

Antwort

0

Ich konfrontiert auch ähnliches Problem in Apple-Geräten, war es aufgrund der Content Security Policy. In index.html half mir der folgende Code.

<meta http-equiv="Content-Security-Policy" content="default-src * 'self' gap: ; img-src * 'self' data:; script-src 'self' 'unsafe-inline' 'unsafe-eval' *; media-src *; style-src 'self' 'unsafe-inline' *"> 

Das Gerät Aufruf Lücke: bereit scheint das Problem zu sein. Fügen Sie dafür, wie erwähnt, eine Lücke in CSP ein. Hoffe das hilft dir auch.