上传后无法立即从存储中获取 firebase 图片 URL
Cant get firebase image URL from storage right after uploading
我正在为一个应用程序使用 firebase 存储,这样我就可以存储我想要在弹出窗口中显示的图像 window。现在我可以引用图像,但我无法使用 getDownloadURL()
获取图像的 URL
。
我已经尝试了所有方法,但似乎无法获得 URL 并且仅在控制台中出现错误 Error: Reference.push failed: the first argument contains undefined in property 'markers.imageURL.i'", AND " Failed to load resource: the server responded with a status of 404 (HTTP/2.0 404)
有人知道为什么吗?
这是我的代码片段。 imageFURLY 是 return 而不是 URL。
document.getElementById('infowindowSubmit').addEventListener('click', function (event, imageFURL) {
// This function saves the newly created marker and the infowindow information when
//the 'Submit' button is clicked.
var fileInput = document.getElementById('fileInput');
var file = fileInput.files[0];
//Create storage ref
var storageRef = firebase.storage().ref('markerpics/' + file.name);
var task = storageRef.put(file);
console.log('storageRef ', storageRef)
imageFURL = storageRef;
console.log('imageFURL ', imageFURL);
//Upload file
imageFURLY = imageFURL.getDownloadURL();
console.log('imageFURLY ', imageFURLY);
//Variables that store data inputted in infowindow
var postName = document.getElementById('formName');
var postNameF = postName.value;
var postMessage = document.getElementById('formMessage');
var postMessageF = postMessage.value;
var postImageRef = imageFURLY;
console.log('postImageRef - URL: ', postImageRef);
var latitude = location.lat(location);
var longitude = location.lng(location);
//Closes markers open infowindow
largeInfowindow.close(map, marker);
//Sets markers infowindow to NEW content
console.log('Setting infowindow content!! ');
largeInfowindow.setContent('<div>' + '<div>Name: ' + postNameF + '</div><br>' + '<div>Message: ' + postMessageF + '</div><br>' + '<div>Image: ' + '</div>' + '<img style="height: 100px; width: 100px;" src="' + postImageRef + '" alt="Mountain View">' + '<br>' + '</div>');
console.log('Set infowindow content!! ');
largeInfowindow.open(map, marker);
// Make sure the marker property is cleared if the infowindow is closed.
largeInfowindow.addListener('closeclick', function () {
largeInfowindow.marker = null;
});
我敢打赌,您正试图获得 URL 尚不存在的东西。
document.getElementById('infowindowSubmit').addEventListener('click', function (event, imageFURL) {
// This function saves the newly created marker and the infowindow information when
//the 'Submit' button is clicked.
var fileInput = document.getElementById('fileInput');
var file = fileInput.files[0];
//Create storage ref
var storageRef = firebase.storage().ref('markerpics/' + file.name);
到目前为止一切正常
var task = storageRef.put(file);
这是推迟的。 task
是一个承诺。
console.log('storageRef ', storageRef)
imageFURL = storageRef;
console.log('imageFURL ', imageFURL);
//Upload file
imageFURLY = imageFURL.getDownloadURL();
put
尚未执行,但您正在调用 getDownloadURL()
。因此,它还没有!然后你得到一个 404。
修复方法如下:
document.getElementById('infowindowSubmit').addEventListener('click', function (event, imageFURL) {
// This function saves the newly created marker and the infowindow information when
//the 'Submit' button is clicked.
var fileInput = document.getElementById('fileInput');
var file = fileInput.files[0];
//Create storage ref
var storageRef = firebase.storage().ref('markerpics/' + file.name);
var task = storageRef.put(file);
task.then(function(snapshot) {
console.log('storageRef ', storageRef)
imageFURL = storageRef;
console.log('imageFURL ', imageFURL);
//Upload file
imageFURLY = imageFURL.getDownloadURL();
// ...
});
let file = await bucket.upload(fromFilePath, {destination: toFilePath});
const trimUrl = file[0].metatata.mediaLink
我正在为一个应用程序使用 firebase 存储,这样我就可以存储我想要在弹出窗口中显示的图像 window。现在我可以引用图像,但我无法使用 getDownloadURL()
获取图像的 URL
。
我已经尝试了所有方法,但似乎无法获得 URL 并且仅在控制台中出现错误 Error: Reference.push failed: the first argument contains undefined in property 'markers.imageURL.i'", AND " Failed to load resource: the server responded with a status of 404 (HTTP/2.0 404)
有人知道为什么吗?
这是我的代码片段。 imageFURLY 是 return 而不是 URL。
document.getElementById('infowindowSubmit').addEventListener('click', function (event, imageFURL) {
// This function saves the newly created marker and the infowindow information when
//the 'Submit' button is clicked.
var fileInput = document.getElementById('fileInput');
var file = fileInput.files[0];
//Create storage ref
var storageRef = firebase.storage().ref('markerpics/' + file.name);
var task = storageRef.put(file);
console.log('storageRef ', storageRef)
imageFURL = storageRef;
console.log('imageFURL ', imageFURL);
//Upload file
imageFURLY = imageFURL.getDownloadURL();
console.log('imageFURLY ', imageFURLY);
//Variables that store data inputted in infowindow
var postName = document.getElementById('formName');
var postNameF = postName.value;
var postMessage = document.getElementById('formMessage');
var postMessageF = postMessage.value;
var postImageRef = imageFURLY;
console.log('postImageRef - URL: ', postImageRef);
var latitude = location.lat(location);
var longitude = location.lng(location);
//Closes markers open infowindow
largeInfowindow.close(map, marker);
//Sets markers infowindow to NEW content
console.log('Setting infowindow content!! ');
largeInfowindow.setContent('<div>' + '<div>Name: ' + postNameF + '</div><br>' + '<div>Message: ' + postMessageF + '</div><br>' + '<div>Image: ' + '</div>' + '<img style="height: 100px; width: 100px;" src="' + postImageRef + '" alt="Mountain View">' + '<br>' + '</div>');
console.log('Set infowindow content!! ');
largeInfowindow.open(map, marker);
// Make sure the marker property is cleared if the infowindow is closed.
largeInfowindow.addListener('closeclick', function () {
largeInfowindow.marker = null;
});
我敢打赌,您正试图获得 URL 尚不存在的东西。
document.getElementById('infowindowSubmit').addEventListener('click', function (event, imageFURL) {
// This function saves the newly created marker and the infowindow information when
//the 'Submit' button is clicked.
var fileInput = document.getElementById('fileInput');
var file = fileInput.files[0];
//Create storage ref
var storageRef = firebase.storage().ref('markerpics/' + file.name);
到目前为止一切正常
var task = storageRef.put(file);
这是推迟的。 task
是一个承诺。
console.log('storageRef ', storageRef)
imageFURL = storageRef;
console.log('imageFURL ', imageFURL);
//Upload file
imageFURLY = imageFURL.getDownloadURL();
put
尚未执行,但您正在调用 getDownloadURL()
。因此,它还没有!然后你得到一个 404。
修复方法如下:
document.getElementById('infowindowSubmit').addEventListener('click', function (event, imageFURL) {
// This function saves the newly created marker and the infowindow information when
//the 'Submit' button is clicked.
var fileInput = document.getElementById('fileInput');
var file = fileInput.files[0];
//Create storage ref
var storageRef = firebase.storage().ref('markerpics/' + file.name);
var task = storageRef.put(file);
task.then(function(snapshot) {
console.log('storageRef ', storageRef)
imageFURL = storageRef;
console.log('imageFURL ', imageFURL);
//Upload file
imageFURLY = imageFURL.getDownloadURL();
// ...
});
let file = await bucket.upload(fromFilePath, {destination: toFilePath});
const trimUrl = file[0].metatata.mediaLink