私はオーディオをアップロードして後でダウンロードしようとしています。 私はこのプロセスにfirebaseサーバを使用しています。firebaseからオーディオをアップロード/ダウンロード
私には2つの質問があります。いずれかの方に解決策があれば、目的を解決できます。
- blobの代わりにファイルとしてファイルをアップロードする方法。私は、最初にファイルをblobに変換してアップロードするのではなく、そのままファイルをアップロードする方法があるはずだと信じています(これは私が今やっていることです)。
- ファイルをダウンロードできましたが、再生できませんでした。ファイルが最初にDataURL/ArrayBufferに変換されてからアップロードされたので、どうすればそれをオーディオ(mp3/wav)に戻すことができますか?
アップロードするコード:
$scope.uploadFile = function(){ // uploading file
var storageRef= firebase.storage().ref();
var filename= $scope.audio.src.substring($scope.audio.src.lastIndexOf("/")+1,$scope.audio.src.length);
$scope.fname= filename;
// fetching file to upload
baseServ.dirEntry.getFile(filename, {}, function(entry){
entry.file(function(gotfile){
var reader= new FileReader();
reader.onloadend= function(resultFile){
console.log(resultFile);
var blob= new Blob([resultFile], {type:"audio/mp3"});
// uploading to firebase server
var uploadTask = storageRef.child(filename).put(blob);
uploadTask.on('state_changed', function(snapshot){
console.log("state_changed:" + filename + "::::Current State:" +snapshot.state);
}, function(error) {
alert("upload error");
}, function() {
$scope.downloadURL = uploadTask.snapshot.downloadURL;
});
}
//reading as dataUrl or ArrayBuffer
reader.readAsDataURL(gotfile);
})
});
}
およびダウンロードする:
$scope.downloadFile= function(){
var ft= new FileTransfer();
ft.download($scope.downloadURL, baseServ.dirDownloads.nativeURL + $scope.fname, function(entry) {
// download is successful but unable to play when opening in my device
console.log("download complete: " + entry.toURL());
},
function(error) {
console.log("download error source " + error.source);
},
false,
{});
}
感謝。
火災ベースのみを使用しています。 mp3ファイルをblobとしてではなくmp3としてアップロードする必要があります。方法はありますか? – Aashish
FirebaseにはFirebase Storageが含まれています。リアルタイムデータベースを使用してオーディオを保存する場合は、間違ったツールを使用していることに注意してください。 –
ファイアーベースでさらに作業した後、私はリアルタイムDBをできるだけ軽く保つべきだと言うことができます。管理者としても苦労します。一方、ストレージは重量のあるファイルで再生できます。 おかげさまで – Aashish