Я пытаюсь получить имя файла из хранилища Firebase. Прямо сейчас я получил ссылку для скачивания и пытаюсь получить от нее имя.
const showPhoto = () => {
var eventDOM = event.target;
var src = eventDOM.getAttribute('src');
setpickImage(src);
console.info(src);
// src = "https://firebasestorage.googleapis.com/v0/b....."
}
Мне нужно имя файла, чтобы удалить файл из хранилища.
🤔 А знаете ли вы, что...
JavaScript может выполняться как на стороне клиента (в браузере), так и на стороне сервера (с использованием Node.js).
Если вы хотите сопоставить URL-адрес загрузки с именем файла, используйте метод refFromURL.
Также см. документацию по созданию ссылки из URL-адреса загрузки, которая содержит этот пример:
var httpsReference = storage.refFromURL('https://firebasestorage.googleapis.com/b/bucket/o/images%20stars.jpg');
Из этой Ссылки вы можете получить другие свойства, такие как имя файла.
let fileName = httpsReference.name;
Чтобы получить имя файла и URL-адрес или ссылку для загрузки видео или файлов из хранилища Firebase, вы можете использовать эти две функции в javascript и реагировать
// function to fetch videos / files from firebase storage
const fetchVideos = async() => {
const storageRef = firebase.storage().ref("your storage folder name");
const videos = [];
await storageRef
.listAll()
.then(async function(result) {
result.items.forEach(async function(videoRef) {
// getting the name of the file
const videoName = videoRef.name;
// getting the url of the file -> calling another function for this
const videoUrl = await getVideoUrl(videoRef);
// creating the object with name and url
const videoObj = {
videoName,
videoUrl,
};
console.info("video obj", videoObj);
videos.push(videoObj);
});
})
.catch(function(error) {
// Handle any errors
return [];
});
}
// function to get download url
const getVideoUrl = (imageRef) => {
const videoLink = imageRef
.getDownloadURL()
.then(function(videoUrl) {
console.info("videoUrl", videoUrl);
return videoUrl;
})
.catch(function(error) {
// Handle any errors
return "";
});
return videoLink;
};