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 バイトを示すため、ファイルの実際の内容が送信されていないように見えます。
上記のコードを単純なテキスト ファイルでテストしたところ、問題なく処理されたので、パーミッションや構文の問題ではないと思います。画像ファイルでこれを試したことはありませんが、送信しているものに大きな違いがあるとは想像できません。
誰もこれを成功させましたか?