【发布时间】:2012-11-07 16:05:03
【问题描述】:
- 我们有一个使用 PhoneGap Media API 以及 iOS 的 File API 来录制音频的应用程序。
- 当用户单击Accept & Upload 按钮时,应用程序会使用 PhoneGap 的 File.FileTransfer() 方法将该文件移动到服务器。
- 适用于 iOS,Android 则不太适用。
- 当我将 Android 设备连接到计算机并安装为驱动器时,我可以看到文件正在根目录中创建,而这正是它应该在的位置。
- 创建音频文件后,我可以从存储在全局变量
fullRecordPathwhich =recording.wav中的位置在我的设备上播放文件 - 当我尝试将 File.FileTransfer() 指向该路径时,我得到了错误代码 = 1,据我了解 找不到文件
处理接受和上传点击事件的代码:
$('#btnAcceptUpload').live('tap',function () {
if(isIOS){
thisFileToUpload = fullRecordPath;
} else {
// thisFileToUpload = './'+fullRecordPath; //doesn't work
// thisFileToUpload = 'file:///'+fullRecordPath; //doesn't work
thisFileToUpload = fullRecordPath; //doesn't work
}
var options = new FileUploadOptions();
msg = '';
options.fileKey="file";
msg += "options.fileKey = "+options.fileKey+"\n";
options.fileName=thisFileToUpload.substr(thisFileToUpload.lastIndexOf('/')+1);
msg += "options.fileName = "+options.fileName+"\n";
options.mimeType='audio/wav';
options.chunkedMode = false;
msg += "options.mimeType = "+options.mimeType+"\n";
msg += "thisFileToUpload = "+thisFileToUpload;
alert(msg);
var ft = new FileTransfer();
ft.upload(thisFileToUpload, "http://10.0.17.121/~email/ttmovefiles.php", fileUploadSuccess, fileUploadFailure, options);
});
成功回调:
function fileUploadSuccess(r) {
console.log("Code = " + r.responseCode);
console.log("Response = " + r.response);
console.log("Sent = " + r.bytesSent);
alert(r.response);
}
失败回调:
function fileUploadFailure(error){
alert("An error has occurred: Code = " + error.code);
}
感谢收看。
【问题讨论】:
-
什么是 Android 上的 fullRecordPath?
-
Simon,为了在设备上播放音频,它是
recording.wav。上传的目的是file:///mnt/sdcard/recording.wav
标签: javascript jquery cordova jquery-mobile