Firebase, чтобы получить URL

Опубликовано: 7 Июля, 2021

Что такое Firebase?

Firebase - это платформа, которая позволяет создавать веб-приложения и мобильные приложения без языка программирования на стороне сервера. Он хранит данные пользователей в своей базе данных в реальном времени, которая синхронизирует данные между пользователями в реальном времени. Это продукт Google, который предлагает нам множество функций. Некоторые ключевые особенности Firebase:

  • Хостинг Firebase
  • База данных в реальном времени
  • Аналитика Firebase
  • Обмен сообщениями в облаке
  • Хранилище Firebase
  • Уведомления и т. Д.

Все эти функции делают firebase хорошим инструментом, хотя наиболее широко используемой функцией firebase, безусловно, является база данных в реальном времени, которую он предлагает. База данных реального времени Firebase - это, по сути, база данных NoSQL, размещенная в облаке, которая позволяет хранить и синхронизировать между вашими пользователями в режиме реального времени. База данных - это всего лишь один большой объект JSON, которым разработчики могут управлять в реальном времени. Синхронизация в реальном времени позволяет пользователям легко получать доступ к своим данным с любого устройства, будь то Интернет или мобильное устройство.

Получить URL изображения

Firebase может использоваться для различных целей, но в основном используется для базы данных в реальном времени, онлайн-обработки. Облачное хранилище Firebase - это наиболее часто используемая функция, используемая разработчиками. Облачное хранилище позволяет разработчикам быстро и легко загружать файлы в корзину Google Cloud Storage, предоставляемую и управляемую Firebase.

URL-адрес изображения получается путем загрузки изображения в корзину firebase, а затем он может вернуть URL-адрес, который является постоянным URL-адресом, который можно открыть где угодно. Затем пользователь может использовать этот URL-адрес для любых целей в своем приложении.

Создайте сегмент в firebase, а затем создайте папку «images» (или любое имя папки), а затем получите доступ к файлу конфигурации из firebase, который этот файл сгенерирует при создании сегмента базы данных.

Код конфигурации похож на код, показанный ниже:

var config = {
    apiKey: "ВАШ КЛЮЧ",
    authDomain: "ВАШ ДОМЕН",
    databaseURL: "URL БАЗЫ ДАННЫХ",
    projectId: "postweb-b3f18",
    ведро: "ВЕДРО",
    messagingSenderId: "157746640407"
  };

Добавьте ниже тег скрипта перед добавлением вышеуказанного кода конфигурации

Инициализируйте облачное хранилище FireBase

 firebase.initializeApp (конфигурация);



Добавьте HTML-код в свой html-код, чтобы мы могли загрузить файл




<form>
<progress value= "0" id= "uploader" max= "100" >0%</progress><br><br>
// get the file from user
<input id= "photo" class= "file" type= "file" name= "mainimage"
value= "" onchange= "getfile()" ><br><br>
// submit the chosen file
<button id= "submit_link" type= "submit" name= "button" >Save</button>
</form>

Объяснение:
Приведенный выше код представляет собой просто html-форму, которая может принимать ввод от пользователя, то есть пользователь может выбрать файл, который он хочет загрузить, и нажать кнопку сохранения. Когда пользователь выбирает файл, вызовы функции getfile () и показанная ниже функция getfile () в файле javascript может запускаться. Затем дальнейшая обработка вызовов может быть выполнена в коде javascript и возвращении URL-адреса изображения.

Добавление javascript, чтобы определенная функция в html могла работать:




<script type= "text/javascript" >
var selectedFile;
function getfile()
{
var pic = document.getElementById( "photo" );
// selected file is that file which user chosen by html form
selectedFile = pic.files[0];
// make save button disabled for few seconds that has id='submit_link'
document.getElementById( 'submit_link' ).setAttribute( 'disabled' , 'true' );
myfunction(); // call below written function
}
function myfunction()
{
// select unique name for everytime when image uploaded
// Date.now() is function that give current timestamp
var name= "123" +Date.now();
// make ref to your firebase storage and select images folder
var storageRef = firebase.storage().ref( '/images/' + name);
// put file to firebase
var uploadTask = storageRef.put(selectedFile);
// all working for progress bar that in html
// to indicate image uploading... report
uploadTask.on( 'state_changed' , function (snapshot){
var progress =
(snapshot.bytesTransferred / snapshot.totalBytes) * 100;
var uploader = document.getElementById( 'uploader' );
uploader.value=progress;
switch (snapshot.state) {
case firebase.storage.TaskState.PAUSED:
console.log( 'Upload is paused' );
break ;
case firebase.storage.TaskState.RUNNING:
console.log( 'Upload is running' );
break ;
}
}, function (error) {console.log(error);
}, function () {
// get the uploaded image url back
uploadTask.snapshot.ref.getDownloadURL().then(
function (downloadURL) {
// You get your url from here
console.log( 'File available at' , downloadURL);
// print the image url
console.log(downloadURL);
document.getElementById( 'submit_link' ).removeAttribute( 'disabled' );
});
});
};
</script>

Объяснение:
Когда пользователь отправляет html-форму, вызывается функция getfile (). Эта функция просто берет файл, выбранный формой html, и отключает кнопку сохранения на несколько секунд, пока файл не будет загружен в firebase, а затем вызывает другую функцию, которая называется myfunction (). «myfunction ()» может содержать все «имя» объекта, связанного с firebase, в «myfunction» - это имя, под которым изображение хранится в базе данных. А затем некоторый код для запуска индикатора выполнения, storageRef и другого объекта, который все связан с firebase, и storageRef.put (selectedFile) помещает выбранный файл в базу данных. Затем uploadTask.snapshot.ref.getDownloadURL () возвращает нам URL-адрес и кнопку сохранения в форме html, которая снова не может загрузить другое изображение.
Файл загружается в firebase, а затем возвращает URL-адрес, который занимает 2-3 секунды, поэтому я могу использовать индикатор выполнения и отключить кнопку отправки на некоторое время. Когда файл загружен и URL-адрес сгенерирован, активна только кнопка «Отправить».