我正在尝试使用 PhoneGap 在 iPhone 上录制音频,然后将该音频发送到服务器。我使用 PhoneGap 媒体 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 个字节(无论文件大小),所以看起来文件的实际内容没有被发送过来。
我已经用一个简单的文本文件测试了上面的代码,它运行得很好,所以我认为这不是权限或语法问题。我没有用图像文件尝试过这个,但我无法想象它对我发送的内容有很大的影响。
有没有人成功做到这一点?