尝试使用FileTransfer插件将amr文件从移动设备上载到带有phonegap的服务器。

var uri = "./" + $scope.audio.src;
$scope.audio.release();

var options = new FileUploadOptions();

options.fileKey = "audio";
options.fileName = uri.substr(uri.lastIndexOf('/') + 1);
options.mimeType = "audio/AMR";
options.httpMethod = "POST";
options.chunkedMode = false;

console.log("Options:", options);

options.params = {
    exhibitId: $scope.id,
    title: $scope.title,
    email: $scope.email
};

var ft = new FileTransfer();
ft.upload(uri, encodeURI("http://someurl.com/api/recording/create"),
    $scope.uploadSuccess,
    $scope.uploadFailure,
    options
);

其中音频是Media对象。
在服务器(nodejs)上检查时,请求对象的body和file属性为空,头中的内容长度设置为0。似乎文件未正确附加到请求。

最佳答案

这是因为你没有正确地设置你的路径。为此,需要使用绝对路径,可以将requestfilesystem与fullpath一起使用来获取此信息。

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
    function(fileSystem){
        fileSystem.root.fullPath;
});

09-25 17:23
查看更多