Как получить имя файла по ссылке для скачивания в хранилище Firebase (Javascript, React)?

Я пытаюсь получить имя файла из хранилища 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).


1 862
2

Ответы:

Решено

Если вы хотите сопоставить 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;
};