質問

im PhoneGapのファイルAPIを使用してキャプチャしたオーディオファイルをアップロードしようとしています。オーディオファイルをMP3ファイルとして録音し、ファイルシステム内のファイルを見つけ、後でファイルをサーバーにアップロードします。ファイルの録音はうまく機能し、私のローカルストレージでそれを再生することができます。ファイルのアップロードもうまく機能しているようですが、アップロードしたときにMP3ファイルを再生できません。だから私は尋ねるのですか。録音されたファイルへのパスは正しいアップロードしようとしていますか、そして私はメディアファイルから正しいbase64エンコード文字列を取得するか、私のデバイスの探しているファイルを見つけることができないので、私は新しいファイルを作成します。現時点では、im Androidを取り組んでいますが、iOSのための癖であるならば、私はそれらを本当に知りたいと思います。 MP3ファイルを作成すると、それは私の/ storage / emaped / 0ディレクトリに保存されます。 FirefoxでMP3ファイルを開くと、MP3ファイルの期間は、7秒になる必要があります。問題は何ですか?私は私が得ることができるすべての助けに本当に感謝しています、あなたは下の私のコードを見ることができます。

 // The src of the mp3 file, works when I play it after in my local storage
     src = "recording.mp3";
      mediaRec = new Media(src, onSuccess, onError);

      // Record audio
      mediaRec.startRecord();

      // Stop recording after 7 sec
              mediaRec.stopRecord();

// get the file from the file system (local storage)
              window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
// Get the file from the file system

 function gotFS(fileSystem) {
      fileSystem.root.getFile("recording.mp3", null, gotFileEntry, fail);
 }  

 function gotFileEntry(fileEntry) {
     fileEntry.file(gotFile, fail);
 } 

 // the file is successfully retreived

 function gotFile(file){
   readDataUrl(file);
 }

 // turn the file into a base64 encoded string, and update the var base to this value.

 function readDataUrl(file) { 
     var reader = new FileReader();
     reader.onloadend = function(evt) {
    alert(evt.target.result);
    base = evt.target.result;
  };
   reader.readAsDataURL(file);
}

 // later when this is done I upload the file to something called parse. This seems to work fine, 

var file = new Parse.File("sound.mp3", { base64: base }); file.save().then(function() {
      Object.set("soundy", file);
   }, function(error) {
      alert("an error");
   // The file either could not be read, or could not be saved to Parse.
  });
.

ファイルはParseオブジェクトにMP3ファイルとして正常に保存されましたが、再生できません。私は私が得ることができるすべての助けに本当に感謝します

役に立ちましたか?

解決

あなたの問題は、ファイルの読み取りがassynchronousで、ファイルをアップロードしようとすると、ファイルが読んで読み取られないことですか?

READDATAURL()のコールバック関数内にUload Codeを移動しようとする(base = evt.target.result;行の直後)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top