2017-12-15 18 views
0

앱의 dataDirectory에 저장된 이비제이션보기에 이미지를 표시하려고합니다.이오닉 3 - file.dataDirectory에서 이미지 가져 오기 404 찾을 수 없음 (normalizeURL 이후)

this.file.writeFile(this.file.dataDirectory, filename, blob, { replace: true }) 
.then(function(fileEntry) { 
    store.photoData = normalizeURL(fileEntry.nativeURL); 
    resolve(); 
}); 

이미지의 정규화 된 URL : 나는 SRC 태그에 이미지를 설정할 때, 내가 이미지가 DataDirectory를로하는 API에서 반환하고 URL을 정상화 저장된 404

먼저 반환

<img *ngIf="store.photoData" [src]="store.photoData" /> 
:

http://localhost:8080/var/mobile/Containers/Data/Application/1758E3DC-66D3-4481-8835-79C7841A540A/Library/NoCloud/1510162340797.jpg

가 그럼 난 내보기에서 사용

: 다음과 같다

src 태그에서 로컬 리소스 이미지를 사용하는 방법에 대한 아이디어가 있으십니까? 다시 base64로 변환하고 싶지 않습니다! nativeURL을 ionic 파일 getFile 또는 readAsBinaryString과 함께 사용하면 파일을 반환하므로 실제로 존재합니다!

내 config.xml에 <allow-navigation href="http://localhost:8080/*" />을 추가했는데 필요한지 알지 못했습니다.

답변

0

내 얼룩이 잘못되었습니다. 이제 작동 중입니다.

var blob: any = this.b64toBlob(contents, 'image/jpg', 512); 

b64toBlob(b64Data, contentType, sliceSize) { 
      contentType = contentType || ''; 
      sliceSize = sliceSize || 512; 

      var byteCharacters = atob(b64Data); 
      var byteArrays = []; 

      for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) { 
       var slice = byteCharacters.slice(offset, offset + sliceSize); 

       var byteNumbers = new Array(slice.length); 
       for (var i = 0; i < slice.length; i++) { 
        byteNumbers[i] = slice.charCodeAt(i); 
       } 

       var byteArray = new Uint8Array(byteNumbers); 

       byteArrays.push(byteArray); 
      } 

      var blob = new Blob(byteArrays, {type: contentType}); 
      return blob; 
}