为什么我无法使用readAsDataURL()检索base64编码的数据网址?

时间:2014-09-23 02:14:09

标签: javascript ios cordova

我正在构建一个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);
}

0 个答案:

没有答案