我正在构建一个Phonegap应用程序,它使用media.startRecord()中的Phonegap API reference函数来录制音频。然后我想将音频上传到Parse。 Parse允许您上传文件的方法之一是获取该文件的base64编码数据URL并将其存储在这样的变量中
var base64 = "V29ya2luZyBhdCBQYXJzZSBpcyBncmVhdCE=";
var file = new Parse.File("myaudio.wav", { base64: base64 });
有关将文件上传到Parse here
的更多信息我正在尝试使用readAsDataURL获取base64编码数据url,并将其存储在名为“baseString”的变量中,并在警报框中显示它。当然,我将使用该变量将文件上传到Parse。我遇到的问题是,在Android上,下面的代码可以完美地显示录制音频文件后的base64编码数据网址。在Android上,我收到一条警告消息,其中包含“data:audio / x-wav; base64”,后跟base64数据网址。在ios上,我收到一条带有“data:audio / wav; base64”的警告消息,但我没有像Android一样的base64编码数据网址。如果有人能帮助我,我真的很感激。
以下是我在使用readAsDataURL获取base64数据网址时使用Phonegap API参考的代码。我明白,对于ios我必须先创建文件。在我的实际代码中,我已经这样做了。请假设我可以完美地在ios上录制音频。我唯一的问题是readAsDataURL()没有在ios上检索base64数据网址。它只适用于Android。
// Wait for Cordova to load
//
function onLoad() {
document.addEventListener("deviceready", onDeviceReady, false);
}
// Cordova is ready
//
function onDeviceReady() {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}
function gotFS(fileSystem) {
fileSystem.root.getFile("myaudo.wav", null, gotFileEntry, fail);
}
function gotFileEntry(fileEntry) {
fileEntry.file(gotFile, fail);
}
function gotFile(file){
readDataUrl(file);
readAsText(file);
}
function readDataUrl(file) {
var reader = new FileReader();
reader.onloadend = function(evt) {
console.log("Read as data URL");
console.log(evt.target.result);
var baseString = evt.target.result;
alert(baseString); //on Android, I get data:audio/x-wav;base64 along with the data url
// on ios, I only get data:audio/wav;base64 and no data url
};
reader.readAsDataURL(file);
}
function readAsText(file) {
var reader = new FileReader();
reader.onloadend = function(evt) {
console.log("Read as text");
console.log(evt.target.result);
};
reader.readAsText(file);
}
function fail(evt) {
console.log(evt.target.error.code);
}