Я работаю над загрузкой изображений, все работает отлично, но у меня есть 100 изображений, и я хотел бы показать их все у себя View
, так как я получаю полный список изображений в папке, я не могу найти для этого API работай.
firebase
firebase-storage
Луис Руис Фигероа
источник
источник
Ответы:
Начиная с Firebase SDK для JavaScript версии 6.1 , iOS 6.4 и Android версии 18.1 есть метод для вывода списка файлов.
Документация немного разреженный до сих пор, поэтому я рекомендую проверить ответ Rosario в подробности.
Предыдущий ответ, поскольку этот подход иногда может быть полезен:
В настоящее время в Firebase SDK нет вызова API для вывода списка всех файлов в папке Cloud Storage из приложения. Если вам нужна такая функциональность, вы должны хранить метаданные файлов (например, URL-адреса для загрузки) в месте, где вы можете их перечислить. Database Firebase в режиме реального времени и Cloud Firestore идеально подходит для этого , и позволяет также легко обмениваться URL - адрес с другими.
Вы можете найти хороший (но несколько запутанный) образец этого в нашем приложении FriendlyPix . Соответствующий код для веб-версии находится здесь , но есть также версии для iOS и Android.
источник
По состоянию на май 2019 года версия 6.1.0 SDK Firebase для облачного хранилища теперь поддерживает перечисление всех объектов из корзины. Вам просто нужно позвонить
listAll()
вReference
:Обратите внимание, что для использования этой функции вы должны подписаться на версию 2 Правил безопасности , что можно сделать, указав
rules_version = '2';
в первой строке своих правил безопасности:Я бы рекомендовал проверить документацию для получения дополнительной информации.
Кроме того, согласно настройке , на шаге 5 этот сценарий не разрешен,
Node.js
посколькуrequire("firebase/app");
он не будет возвращатьсяfirebase.storage()
как функция. Это достигается только с помощьюimport * as firebase from 'firebase/app';
.источник
С марта 2017 года: с добавлением облачных функций Firebase и более глубокой интеграцией Firebase с Google Cloud это стало возможным.
С помощью Cloud Functions вы можете использовать пакет Google Cloud Node для выполнения эпических операций в облачном хранилище. Ниже приведен пример, который получает все URL-адреса файлов в массив из облачного хранилища. Эта функция будет срабатывать каждый раз, когда что-то сохраняется в облачном хранилище Google.
Примечание 1. Это довольно дорогостоящая операция, поскольку она должна циклически перебирать все файлы в корзине / папке.
Примечание 2 : я написал это просто как пример, не вдаваясь в подробности обещаний и т. Д. Просто чтобы дать представление.
Надеюсь, это даст вам общее представление. Чтобы получить лучшие примеры облачных функций, ознакомьтесь с репозиторием Google на Github, полным примеров облачных функций для Firebase . Также ознакомьтесь с их документацией по API Google Cloud Node.
источник
.then
следующее:this.bucket .getFiles({ prefix: 'path/to/directory' }) .then((arr) => {})
Поскольку в списке нет языка, я отвечу на это на Swift. Мы настоятельно рекомендуем использовать Firebase Storage и Firebase Realtime Database вместе для составления списков загрузок:
Общий:
Загрузить:
Скачать:
Для получения дополнительной информации см. Практический пример того, как это сделать , в разделе От нуля до приложения: разработка с помощью Firebase и связанного с ним исходного кода .
источник
Обходной путь может заключаться в создании файла (например, list.txt), внутри которого ничего нет. В этом файле вы можете установить собственные метаданные (то есть Map <String, String>) со списком всех URL-адресов файла.
Поэтому, если вам нужно загрузить все файлы в fodler, вы сначала загружаете метаданные из файла list.txt, затем перебираете пользовательские данные и загружаете все файлы с URL-адресами на карте.
источник
Я тоже столкнулся с этой проблемой, когда работал над своим проектом. Я действительно хочу, чтобы они предоставили метод end api. В любом случае, вот как я это сделал: когда вы загружаете изображение в хранилище Firebase, создайте объект и одновременно передайте этот объект в базу данных Firebase. Этот объект содержит URI загрузки изображения.
Позже, когда вы захотите загрузить изображения из папки, вы просто перебираете файлы в этой папке. Эта папка имеет то же имя, что и «папка» в хранилище Firebase, но вы можете называть их как хотите. Выложил их в отдельную ветку.
Теперь у меня есть список объектов, содержащих URI каждого изображения, и я могу делать с ними все, что хочу. Чтобы загрузить их в imageView, я создал еще один поток.
Это возвращает список Bitmap, когда он заканчивается, я просто прикрепляю их к ImageView в основном действии. Ниже перечислены методы @Override, потому что у меня созданы интерфейсы и ожидаются их завершения в других потоках.
Обратите внимание, что мне нужно сначала дождаться возврата изображения списка, а затем вызвать поток для работы с растровым изображением списка. В этом случае изображение содержит URI.
Надеюсь, кто-то сочтет это полезным. Он также будет служить линией гильдии для меня в будущем.
источник
Еще один способ добавить изображение в базу данных с помощью облачной функции для отслеживания каждого загруженного изображения и сохранения его в базе данных.
Полный код здесь: https://gist.github.com/bossly/fb03686f2cb1699c2717a0359880cf84
источник
Для node js я использовал этот код
источник
Вы можете вывести список файлов в каталоге хранилища firebase методом listAll (). Чтобы использовать этот метод, необходимо реализовать эту версию хранилища firebase. 'com.google.firebase: firebase-storage: 18.1.1'
https://firebase.google.com/docs/storage/android/list-files
Помните, что обновите Правила безопасности до версии 2.
источник
На самом деле это возможно, но только с помощью Google Cloud API вместо Firebase. Это связано с тем, что хранилище Firebase - это сегмент облачного хранилища Google, к которому можно легко получить доступ с помощью API-интерфейсов Google Cloud, однако вам необходимо использовать OAuth для аутентификации вместо Firebase.
источник
Я столкнулся с той же проблемой, моя еще сложнее.
Администратор загрузит аудио и pdf файлы в хранилище:
аудио / сезон1, сезон2 ... / класс1, класс 2 / файлы .mp3
книги / файлы .pdf
Приложение Android должно получить список подпапок и файлов.
Решение заключается в перехвате события загрузки в хранилище и создании такой же структуры в хранилище с использованием облачной функции.
Шаг 1. Создайте вручную коллекцию "хранилище" и документ "аудио / книги" в firestore
Шаг 2: Настройте облачную функцию
Может занять около 15 минут: https://www.youtube.com/watch?v=DYfP-UIKxH0&list=PLl-K7zZEsYLkPZHe41m4jfAxUi0JjLgSM&index=1
Шаг 3. Захватите событие загрузки с помощью облачной функции
Шаг 4. Получите список папок / файлов в приложении Android с помощью firestore.
Шаг 5. Получите URL для загрузки
Заметка
Мы должны поместить «вспомогательную» коллекцию в каждый элемент, поскольку firestore не поддерживает получение списка коллекции.
На поиск решения у меня ушло 3 дня, надеюсь, у вас уйдет не более 3 часов.
Ура.
источник
Расширение ответа Росарио Перейры Фернандеса для решения JavaScript:
JavaScript
как язык по умолчаниюфункции / package.json
listAll
функциюindex.js
images.js
firebase deploy
для загрузки облачной функцииbuild.gradle
котлин класс
Что касается дальнейшего развития этой функции, я столкнулся с некоторыми проблемами, которые могли здесь найти .
источник
Для этого с помощью JS
Вы можете добавить их прямо в свой контейнер div или отправить их в массив. Ниже показано, как добавить их в свой div.
1) Когда вы храните изображения в хранилище, создайте ссылку на изображение в базе данных firebase со следующей структурой
2) Когда вы загружаете документ, вытаскиваете все URL-адреса источников изображений из базы данных, а не из хранилища, с помощью следующего кода
источник
Вы можете использовать следующий код. Здесь я загружаю изображение в хранилище firebase, а затем сохраняю URL-адрес загрузки изображения в базу данных firebase.
Теперь, чтобы получить все изображения, хранящиеся в базе данных firebase, вы можете использовать
Более подробную информацию вы можете найти в моем сообщении Пример хранилища Firebase .
источник
Итак, у меня был проект, который требовал загрузки ресурсов из хранилища firebase, поэтому мне пришлось решать эту проблему самостоятельно. Вот как:
1- Сначала создайте данные модели, например
class Choice{}
, в этом классе определяется строковая переменная с именем image Name, чтобы она была такой2- из базы данных / базы данных firebase перейдите и жестко закодируйте имена изображений для объектов, поэтому, если у вас есть имя изображения Apple.png, создайте объект, который будет
3- Теперь получите ссылку на активы в хранилище firebase, которая будет примерно такой
как этот
4- наконец, инициализируйте ссылку на хранилище firebase и начните получать файлы таким циклом
5- вот и все
источник
источник
Я использую
AngularFire
и использую следующее, чтобы получить всеdownloadURL
источник
Для Android лучший способ - использовать FirebaseUI и Glide.
Вам нужно добавить это в свой gradle / app, чтобы получить библиотеку. Обратите внимание, что на нем уже есть Glide!
А затем в вашем коде используйте
источник