【发布时间】:2016-12-08 02:37:52
【问题描述】:
我正在尝试上传音频并稍后下载。 我正在为这个过程使用 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,
{});
}
谢谢。
【问题讨论】:
标签: javascript angularjs cordova firebase firebase-storage