我想上传音频并稍后下载。 我正在使用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,
{});
}
感谢。
我只使用firebase。我只需要将MP3文件作为mp3上传,而不是作为blob。有没有办法? – Aashish
Firebase包含Firebase存储。恭喜,如果您使用实时数据库存储音频,那么您使用的工具是错误的工具。 –
正确地说,在与firebase进一步合作之后,我可以说实时数据库应该保持尽可能轻。作为管理员也会给你一段艰难的时光。 另一方面,存储可以与Heavy文件一起玩。 谢谢。 – Aashish