从iOS设备的PhoneGap .wav上传正在服务器上创build一个0k文件

我正在尝试使用PhoneGap在iPhone上录制audio,然后将该audio发送到服务器。 我使用PhoneGaps Media API进行录制,然后使用PhoneGap文件传输API将文件发送到服务器。

我能够把录音做得很好,而且播放完美。 当我尝试将它发送到服务器,但是,logging显示在服务器上,但它说,该文件是0K大。

我在这个问题上进行了相当广泛的search,发现其他人有这个问题。 例如: 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字节(不pipe文件的大小),所以看起来好像文件的实际内容没有被发送。

我已经用一个简单的文本文件testing了上面的代码,它通过了很好,所以我不认为这是一个权限或语法问题。 我还没有尝试过这个与图像文件,但我不能想象它使我发送的差别很大。

有没有人做到这一点成功?

我前几天设法解决了这个问题。 这是关于在问题的例子中的myPathvariables。 myPath不能是tmp文件夹以外的任何东西(phonegap / device创build的临时文件夹)所以,当你尝试发送一个文件时,你肯定知道该文件的副本是在tmp文件夹中创build的。 所以在ft.upload之前就这样做:

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

在我的情况下,myFolderPath是“Documents \ media”。 “文档”path是自定义创build的文件保存在设备上的位置。

我希望这可以节省所有访问过的谷歌search页面:)
(这工作电话3.0.0)