Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从Firebase存储获取下载URL_Javascript_Firebase_Google Cloud Firestore - Fatal编程技术网

Javascript 如何从Firebase存储获取下载URL

Javascript 如何从Firebase存储获取下载URL,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,我正在处理存储firebase,我正在尝试获取URL并将其设置为变量,不幸的是,我无法做到这一点,我的代码有问题。谁能帮帮我吗 这就是错误: firebase.js:1未捕获(承诺中)错误:Reference.push失败:第一个参数包含未定义的属性“positioners.ImageURL.i” 代码如下: console.log('Nice, The file has been successfully uploaded to the Firebase storage!'); var Dow

我正在处理存储firebase,我正在尝试获取URL并将其设置为变量,不幸的是,我无法做到这一点,我的代码有问题。谁能帮帮我吗

这就是错误:

firebase.js:1未捕获(承诺中)错误:Reference.push失败:第一个参数包含未定义的属性“positioners.ImageURL.i”

代码如下:

console.log('Nice, The file has been successfully uploaded to the Firebase storage!');
var DownloadURL = uploadTask.snapshot.downloadURL;
var Url_File = uploadTask.snapshot.ref.getDownloadURL().then(function (URL) {
           return URL;
           });
           alert(Url_File);
                                    uploadTask.snapshot.ref.getDownloadURL().then(function (downloadURL) {
                                        console.log('File available at', downloadURL);
                                        //Url_File = downloadURL;
                                    });
                                    //getting the publication time
                                    var dayObj = new Date();
                                    var day = dayObj.getDate();
                                    var monthNames = ["January", "February", "March", "April", "May", "June",
                                        "July", "August", "September", "October", "November", "December"
                                    ];
                                    var month = monthNames[dayObj.getMonth()]
                                    var year = dayObj.getFullYear();
                                    var hour = dayObj.getHours();
                                    var minutes = dayObj.getMinutes();
                                    var seconds = dayObj.getSeconds();
                                    var GlobalUserName = <%=Session["UserId"] %>;
                                        firebase.database().ref('PostUsers/').push({
                                            ImageURL: Url_File,
                                            userAuthor: GlobalUserName,
                                            day: day,
                                            month: month,
                                            year: year,
                                            hour: hour,
                                            minutes: minutes,
                                            seconds: seconds
                                        });
                                        //console.log('the download Url of your file is: '+ downloadURL);
                                        console.log('User post successfully added to realtime data bases');
                                    });
console.log('Nice,该文件已成功上载到Firebase存储!');
var DownloadURL=uploadTask.snapshot.DownloadURL;
var Url_File=uploadTask.snapshot.ref.getDownloadURL()。然后(函数(Url){
返回URL;
});
警报(Url\u文件);
uploadTask.snapshot.ref.getDownloadURL().then(函数(downloadURL)){
log('File available at',downloadURL);
//Url\u文件=下载Url;
});
//获得出版时间
var dayObj=新日期();
var day=dayObj.getDate();
var monthNames=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”,
“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”
];
var month=monthNames[dayObj.getMonth()]
var year=dayObj.getFullYear();
var hour=dayObj.getHours();
var minutes=dayObj.getMinutes();
var seconds=dayObj.getSeconds();
变量GlobalUserName=;
firebase.database().ref('positioners/').push({
ImageURL:Url\u文件,
用户作者:GlobalUserName,
天:天,
月:月,,
年份:年份,,
小时:小时,
分钟:分钟,
秒:秒
});
//log('文件的下载Url为:'+下载Url);
log('User post已成功添加到实时数据库');
});
我尝试过许多不同的方法,但是没有一种能正常工作

提前谢谢

在这段代码中:

var Url_File = uploadTask.snapshot.ref.getDownloadURL().then(function (URL) {
    return URL;
});
下载URL位于名为
URL
的变量中的promise回调中。它不在
Url\u文件中
Url\u文件
将包含由
then()
返回的承诺

您需要将使用下载URL的代码放在promise回调中第一个可用的位置。按照现在的方式,使用下载URL的代码将在URL可用之前执行。

在这段代码中:

var Url_File = uploadTask.snapshot.ref.getDownloadURL().then(function (URL) {
    return URL;
});
下载URL位于名为
URL
的变量中的promise回调中。它不在
Url\u文件中
Url\u文件
将包含由
then()
返回的承诺


您需要将使用下载URL的代码放在promise回调中第一个可用的位置。按照现在的方式,使用下载URL的代码在URL可用之前执行。

下载URL仅在从
getDownloadURL()获取的
然后
回调中可用。
。除此之外,你无法访问它

因此,解决方案是将所有需要下载URL的代码移动到回调中:

uploadTask.snapshot.ref.getDownloadURL().then(function (URL) {
   //getting the publication time
    var dayObj = new Date();
    var day = dayObj.getDate();
    var monthNames = ["January", "February", "March", "April", "May", "June",
        "July", "August", "September", "October", "November", "December"
    ];
    var month = monthNames[dayObj.getMonth()]
    var year = dayObj.getFullYear();
    var hour = dayObj.getHours();
    var minutes = dayObj.getMinutes();
    var seconds = dayObj.getSeconds();
    var GlobalUserName = <%=Session["UserId"] %>;
    firebase.database().ref('PostUsers/').push({
        ImageURL: URL,
        userAuthor: GlobalUserName,
        day: day,
        month: month,
        year: year,
        hour: hour,
        minutes: minutes,
        seconds: seconds
    });
    console.log('User post successfully added to realtime database');
});
uploadTask.snapshot.ref.getDownloadURL().then(函数(URL){
//获得出版时间
var dayObj=新日期();
var day=dayObj.getDate();
var monthNames=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”,
“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”
];
var month=monthNames[dayObj.getMonth()]
var year=dayObj.getFullYear();
var hour=dayObj.getHours();
var minutes=dayObj.getMinutes();
var seconds=dayObj.getSeconds();
变量GlobalUserName=;
firebase.database().ref('positioners/').push({
ImageURL:URL,
用户作者:GlobalUserName,
天:天,
月:月,,
年份:年份,,
小时:小时,
分钟:分钟,
秒:秒
});
log('User post已成功添加到实时数据库');
});
在处理现代web API时,这是一种非常常见的模式:它们都是异步的,您的代码必须处理这一点

有关这方面的更多信息,请参见:

  • (对于Firebase数据库,这是更常见的混淆原因)

下载URL仅在从
getDownloadURL()
获取的
然后
回调中可用。除此之外,你无法访问它

因此,解决方案是将所有需要下载URL的代码移动到回调中:

uploadTask.snapshot.ref.getDownloadURL().then(function (URL) {
   //getting the publication time
    var dayObj = new Date();
    var day = dayObj.getDate();
    var monthNames = ["January", "February", "March", "April", "May", "June",
        "July", "August", "September", "October", "November", "December"
    ];
    var month = monthNames[dayObj.getMonth()]
    var year = dayObj.getFullYear();
    var hour = dayObj.getHours();
    var minutes = dayObj.getMinutes();
    var seconds = dayObj.getSeconds();
    var GlobalUserName = <%=Session["UserId"] %>;
    firebase.database().ref('PostUsers/').push({
        ImageURL: URL,
        userAuthor: GlobalUserName,
        day: day,
        month: month,
        year: year,
        hour: hour,
        minutes: minutes,
        seconds: seconds
    });
    console.log('User post successfully added to realtime database');
});
uploadTask.snapshot.ref.getDownloadURL().then(函数(URL){
//获得出版时间
var dayObj=新日期();
var day=dayObj.getDate();
var monthNames=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”,
“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”
];
var month=monthNames[dayObj.getMonth()]
var year=dayObj.getFullYear();
var hour=dayObj.getHours();
var minutes=dayObj.getMinutes();
var seconds=dayObj.getSeconds();
变量GlobalUserName