4

PhoneGap を使用して iPhone で音声を録音し、その音声をサーバーに送信しようとしています。私は PhoneGaps Media API を使用して録音を行い、次に PhoneGap ファイル転送 API を使用してファイルをサーバーに送信しています。

録音は問題なくできており、再生も問題なく動作しています。ただし、サーバーに送信しようとすると、サーバーに記録が表示されますが、ファイルのサイズは 0k と表示されます。

この問題についてかなり広範な検索を行ったところ、この問題を抱えている他の人が見つかりました。例: https://groups.google.com/forum/#!topic/phonegap/zjzSs6JVokE

   function win(r) {
        alert("Code = " + r.responseCode);
        alert("Response = " + r.response);
        alert("Sent = " + r.bytesSent);
    }

    function fail(error) {
        alert("An error has occurred: Code = " + error.code);
        console.log("upload error source " + error.source);
        console.log("upload error target " + error.target);
    }

    function upLoad() {
        var options = new FileUploadOptions();
        options.fileKey="file";
        options.fileName=myPath.substr(myPath.lastIndexOf('/')+1);
        options.mimeType="audio/wav";

        var params = new Object();

        var headers={'headerParam':'headerValue'};

        options.headers = headers;

        options.chunkedMode = false;

        var ft = new FileTransfer();
        ft.upload(encodeURI(myPath),  encodeURI("http://myserver.com/upload.php"), win, fail, options);

    }

サーバー側のコードは次のとおりです。

print_r($_FILES);
$new_image_name = "testFile.wav";
move_uploaded_file($_FILES["file"]["tmp_name"], "/var/www/wwwroot/recordings/".$new_image_name);

これは、.wav ファイルを送信しているという事実に問題がある可能性があると思います。ファイルを送信すると、r.bytesSent は通常 (ファイルのサイズに関係なく) 約 200 から 400 バイトを示すため、ファイルの実際の内容が送信されていないように見えます。

上記のコードを単純なテキスト ファイルでテストしたところ、問題なく処理されたので、パーミッションや構文の問題ではないと思います。画像ファイルでこれを試したことはありませんが、送信しているものに大きな違いがあるとは想像できません。

誰もこれを成功させましたか?

4

1 に答える 1

1

私は数日前にこれを解決することができました。質問の例の myPath 変数についてです。myPath は tmp フォルダー (一時フォルダー phonegap/device が作成します) 以外のものにすることはできません。そのため、ファイルを送信しようとすると、そのファイルのコピーが tmp フォルダーに作成されたことがわかります。したがって、ft.upload の直前にこれを行います。

myPath = myPath.replace(myFolderPath, 'tmp');

私の場合、myFolderPath は「Documents\media」でした。Documents パスは、カスタム作成されたファイルがデバイス上に保持される場所です。

これにより、訪問したすべてのGoogle検索ページから人々が救われることを願っています:
)(これはphonegap 3.0.0で機能しました)

于 2013-10-25T09:42:17.887 に答える