我想上傳音頻並稍後下載。 我正在使用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