javascript - Phonegap - 如何在使用 Phonegap 的 media.startRecord 录制后上传音频文件

标签 javascript cordova file-upload

我用 Phonegap 完成了标准录音:

function recordSound() {

    var src = "mysound.mp3";
    var mediaRec = new Media(src, onSuccess, onError);

    // Record audio
    mediaRec.startRecord();

    // Stop recording after 10 sec
    var recTime = 0;
    var recInterval = setInterval(function() {
        recTime = recTime + 1;
        setAudioPosition(recTime + " sec");
        if (recTime >= 10) {
            clearInterval(recInterval);
            mediaRec.stopRecord();
        }
    }, 1000);

}

我现在想上传这个文件 (mysound.mp3),而不是让用户自己选择。任何帮助将不胜感激。

到目前为止我已经做了:

function win(r) {
    console.log("Code = " + r.responseCode);
    console.log("Response = " + r.response);
    console.log("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 up() {// !! Assumes variable fileURI contains a valid URI to a text
    // file on the device

    var fileURI = "/mnt/sdcard/mysound.mp3";
    var options = new FileUploadOptions();
    options.fileKey = "file";
    options.fileName=fileURI.substr(fileURI.lastIndexOf('/')+1);
    options.mimeType = "audio/mp3";

    var params = new Object();
    params.value1 = "test";
    params.value2 = "param";

    options.params = params;

    var ft = new FileTransfer();
    ft.upload(fileURI, "http://myserver/upload.php", win, fail, options);
}

我得到:java.io.IOException:从服务器接收

JSCallback 错误:请求失败

很高兴得到帮助。

最佳答案

您可以使用此功能上传文件

function uploadVoice(fileName, dirName, fileMime, uploadURL) {

    var win = function (r) {
        console.log("Code = " + r.responseCode);
        console.log("Response = " + r.response);
        console.log("Sent = " + r.bytesSent);
    };

    // upload failure
    var fail = function(error) {
        alert("An error has occurred: Code = " + error.code);
    };

    // file system fail
    var fsFail = function(error) {
        alert("failed with error code: " + error.code);

    };

    var dirFail = function(error) {
        alert("Directory error code: " + error.code);

    };

    var fileURI;

    var gotFileSystem = function (fileSystem) {
        fileSystem.root.getDirectory(dirName, {
            create: false
        }, function (dataDir) {

            fileURI = dataDir.fullPath;
            fileURI = fileURI + '/' + fileName;

            var options = new FileUploadOptions();
            options.fileKey = "file";
            options.fileName = fileURI.substr(fileURI.lastIndexOf('/') + 1);
            options.mimeType = fileMime;

            var params = new Object();
            params.value1 = "test";
            params.value2 = "param";

            options.params = params;

            var ft = new FileTransfer();
            ft.upload(fileURI, uploadURL, win, fail, options);

        }, dirFail);

    };

    // get file system to copy or move image file to
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFileSystem, fsFail);

}

希望对你有帮助

关于javascript - Phonegap - 如何在使用 Phonegap 的 media.startRecord 录制后上传音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10770122/

相关文章:

javascript - 这是使用 jQuery 将我的 XML 解析为 JavaScript 对象的最快方法吗?

javascript - angular.isDefined() 与 obj.hasOwnProperty()

android - 当图像文件名在 Android 中带有空格时,Phonegap getPicture 方法失败

javascript - FastAPI - 使用 Axios 上传多个文件会引发错误请求错误

用于文件上传的 javascript/flash 库,带有文件大小限制和进度条

javascript - 没有评估是否可以实现?

angular - 如何记录 Ionic 4 应用程序的崩溃/错误?

windows - 模板内虚拟元素上的 Knockout JS 数据绑定(bind)在 Windows 8.1 Cordova 应用程序上不起作用

php - 文件未上传并出现错误 "File is not uploaded please try again"?

javascript - 无法在 Chrome 中将 <input type ="email"> 重置为空白(在 Firefox 和 IE 中工作正常)