2

FileTransferプラグインを使用して、Phonegap を使用してモバイル デバイスからサーバーに amr ファイルをアップロードしようとしています。

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
);

audio はMediaオブジェクトです。

サーバー (nodejs) で検査すると、リクエスト オブジェクトの body プロパティと file プロパティが空で、ヘッダーの content-length が 0 に設定されています。ファイルがリクエストに正しく添付されていないようです。

4

1 に答える 1

3

パスを適切に設定していないためです。これを行うには絶対パスを使用する必要があります。requestFileSystem を fullPath で使用して、この情報を取得できます。

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, 
    function(fileSystem){ 
        fileSystem.root.fullPath; 
});
于 2013-11-13T04:45:14.513 に答える