2017-12-15 15 views
0

私は、アプリケーションのdataDirectoryに保存されているイオンビューで画像を表示しようとしています。Ionic 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

ファーストを返します。

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

その後、私は私の見解では、それを使用します:

<img *ngIf="store.photoData" [src]="store.photoData" /> 
次のようになります

srcタグでローカルリソースイメージを使用する方法はありますか?私はそれをbase64に戻したくない! nativeLRLをイオンファイル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; 
} 
関連する問題