2

iOSでアプリケーションを開発しています。アプリケーションにPhonegapとjQueryMobileを使用しています。現在、ユーザーが画像をクリックするか、Phonegapを使用してギャラリーから画像を選択し、URIをローカルに保存すると、画像のURIを取得しています。これらの画像をBase64文字列に変換して、サーバーに送信する必要があります。それらをBase64に変換するために、Phonegapが提供する例を使用しています。

<!DOCTYPE html>
<html>
  <head>
    <title>FileReader Example</title>
    <script type="text/javascript" charset="utf-8" src="cordova-1.7.0.js"></script>
    <script type="text/javascript" charset="utf-8">
    // Wait for Cordova to load
    //
    function onLoad() {
        document.addEventListener("deviceready", onDeviceReady, false);
    }
    // Cordova is ready
    //
    function onDeviceReady() {
        window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
    }
    function gotFS(fileSystem) {
        fileSystem.root.getFile("readme.txt", null, gotFileEntry, fail);
    }
    function gotFileEntry(fileEntry) {
        fileEntry.file(gotFile, fail);
    }
    function gotFile(file){
        readDataUrl(file);
        readAsText(file);
    }
    function readDataUrl(file) {
        var reader = new FileReader();
        reader.onloadend = function(evt) {
            console.log("Read as data URL");
            console.log(evt.target.result);
        };
        reader.readAsDataURL(file);
    }
    function readAsText(file) {
        var reader = new FileReader();
        reader.onloadend = function(evt) {
            console.log("Read as text");
            console.log(evt.target.result);
        };
        reader.readAsText(file);
    }
    function fail(evt) {
        console.log(evt.target.error.code);
    }
    </script>
  </head>
  <body>
    <h1>Example</h1>
    <p>Read File</p>
  </body>
</html>

この例では、「readme.txt」の代わりに、シミュレーターでテストするためのローカル画像URIを渡していfileSystem.root.getFile("image.png", null, gotFileEntry, fail);ます。ただし、次のエラーが発生します。

エラーコールバックのエラー:File2 = TypeError:'undefined'はオブジェクトではありません。

画像の絶対パスも試しましたが、同じエラーが発生しました。何がうまくいかないのか分かりませんか?私は何かが足りないのですか?私はこれをできるだけ早くクラックする必要があります。

どんな助けでも大歓迎です。

ありがとう。

4

1 に答える 1

0

ファイルを最初に作成する必要があると思います。これが事実であると確信している場合は、次のように getFile メソッドの 2 番目の引数を指定することでファイルにアクセスできます。

fileSystem.root.getFile("image.png", {'create' : false}, gotFileEntry, fail);

{'create': false} は phonegap にファイルを作成しないように指示します。これがデフォルトのケースだと思います。

于 2012-11-22T14:51:40.783 に答える