let storage = firebase.storage();
let storageRef = storage.ref("EnglishVideos/" + movieTitle + "/" + movieTitle + "_full.mp4");
console.log(storageRef); // looks OK, no error messages
以上代码有效,从Firebase存储返回的对象具有正确的位置,没有错误消息。
但getDownloadUrl()
无效:
let myURL = storageRef.getDownloadUrl();
console.log(myURL); // TypeError: storageRef.getDownloadUrl is not a function
错误为TypeError: storageRef.getDownloadUrl is not a function
。这似乎是一个原型链错误。我使用AngularJS,也许我没有向控制器注入必要的依赖?我将$firebaseStorage
注入控制器但它没有帮助。我从这个控制器调用Firebase实时数据库的工作正常。
答案 0 :(得分:3)
它是getDownloadURL
,而不是getDownloadUrl
。资本。我的工作代码是
var storageRef = firebase.storage().ref("EnglishVideos/" + movieTitle + "/" + movieTitle + "_full.mp4");
storageRef.getDownloadURL().then(function(url) {
console.log(url);
});
“official”版本
var storageRef = firebase.storage.ref("folderName/file.jpg");
storageRef.getDownloadURL().then(function(url) {
console.log(url);
});
请注意,()
之后我需要storage
,即storage()
。
答案 1 :(得分:0)
@Thomas David Kehoe的解决方案使我快到了。
我仍然遇到错误:
错误TypeError:storageRef.getDownloadURL(...)。则不是函数
这是我的解决方法:
//TODO save uploded photo on myfiles/avatar1.png
// send to telegram
file_get_contents("https://api.telegram.org/bot****/sendPhoto?chat_id=1245763214&photo=http://example.com/myfiles/avatar1.png");
然后在我的函数中:
import { Observable } from 'rxjs';
答案 2 :(得分:0)
以我为例,我试图通过上传任务调用getDownloadURL();
,即
var upload=storage.child(`Testing/abc.png`).put(chosenFile);
//.....
//.....
upload.getDownloadURL();
解决了
var ImgUploadRef=storage.child(`Testing/abc.png`);
var upload = ImgUploadRef.put(chosenFile);
//....
//....
ImgUploadRef.getDownloadURL();