2017-02-01 19 views
0

Apache Cordovaアプリを作成して、SDカードに保存されたバイナリイメージを読み込み、さらに処理するためにバイト配列を取得します。Android AppのApache cordovaでバイナリファイル(SDカードから)を読み込めません。

  • com.megster.cordova.FileChooser(ファイルを選択し、ファイル パスを返すために):

    は、私は以下のプラグインを使用しようとしました。
  • cordova-plugin-file(ファイルシステムからファイルを読み込むため)。

コード:私は「URL」パスは、ファイルチューザプラグインから返された後、ファイルを読み取るために、次のコードを使用している

var xhr = new XMLHttpRequest(); 
xhr.open("GET", url, true); 
xhr.responseType = "arraybuffer"; 
xhr.onload = (function() { 
var reader = new FileReader(); 
reader.onloadend = function (evt) { 
}; 
reader.readAsArrayBuffer(xhr.response);}); 
xhr.send(); 

urlで 'reader.readAsArrayBuffer'を直接使用すると、タイプが 'blob'ではないということです。後で 'arraybuffer'として読み込むために 'XMLHttpRequest'を使い、JPEG画像を正しくロードしていますが、バイナリファイルを読み込めません。ファイルの読み方が間違っている場所をお知らせください。

+0

私は 'com.megster.cordova.FileChooser'プラグインを検索しましたが、公式の場所は見つかりませんでした。問題を再現できる基本的なデモを提供してください。 –

+0

「https://github.com/don/cordova-filechooser」にあります。 –

答えて

0

fileChooser pluginから返されたURLはContentURLであり、FileReaderに直接適用することはできません。正しい手順は以下のようなものです:

  1. あなたはURLがfileChooserから返されてしまったら、あなたは以下のように追加したプラグインファイルからwindow.resolveLocalFileSystemURIを呼び出す:

    window.resolveLocalFileSystemURI(url, function (entry) { 
        readFile(entry); 
    }, function (failmsg) { 
        //handle fail 
    }). 
    
  2. あなたが得たFileEntryを使用してファイルを読みます:詳細について

    function readFile(fileEntry) { 
        fileEntry.file(function (file) { 
         var reader = new FileReader(); 
         reader.onloadend = function() { 
          console.log("Successful file read: " + this.result); 
          displayFileData(fileEntry.fullPath + ": " + this.result); 
         }; 
         reader.readAsText(file); 
        }, fail); 
    } 
    

、再してください〜へFile Pluginへ。

関連する問題